projects
/
rocksndiamonds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
rnd-20030829-B-src
[rocksndiamonds.git]
/
src
/
libgame
/
sdl.c
diff --git
a/src/libgame/sdl.c
b/src/libgame/sdl.c
index 3ea7dc18e3f721eafea8e340016e768ca2a21dcc..74123228f2b2185f43100f4c3b2d5c19b70f356a 100644
(file)
--- a/
src/libgame/sdl.c
+++ b/
src/libgame/sdl.c
@@
-26,9
+26,9
@@
/* functions from SGE library */
inline void sge_Line(SDL_Surface *, Sint16, Sint16, Sint16, Sint16, Uint32);
/* functions from SGE library */
inline void sge_Line(SDL_Surface *, Sint16, Sint16, Sint16, Sint16, Uint32);
-#ifdef PLATFORM_WIN32
+/* #ifdef PLATFORM_WIN32 */
#define FULLSCREEN_BUG
#define FULLSCREEN_BUG
-#endif
+/* #endif */
/* stuff needed to work around SDL/Windows fullscreen drawing bug */
static int fullscreen_width;
/* stuff needed to work around SDL/Windows fullscreen drawing bug */
static int fullscreen_width;
@@
-866,6
+866,14
@@
void sge_LineRGB(SDL_Surface *Surface, Sint16 x1, Sint16 y1, Sint16 x2,
inline void SDLPutPixel(Bitmap *dst_bitmap, int x, int y, Pixel pixel)
{
inline void SDLPutPixel(Bitmap *dst_bitmap, int x, int y, Pixel pixel)
{
+#ifdef FULLSCREEN_BUG
+ if (dst_bitmap == backbuffer || dst_bitmap == window)
+ {
+ x += video_xoffset;
+ y += video_yoffset;
+ }
+#endif
+
sge_PutPixel(dst_bitmap->surface, x, y, pixel);
}
sge_PutPixel(dst_bitmap->surface, x, y, pixel);
}
@@
-1269,19
+1277,26
@@
static SDL_Cursor *create_cursor(struct MouseCursorInfo *cursor_info)
void SDLSetMouseCursor(struct MouseCursorInfo *cursor_info)
{
static struct MouseCursorInfo *last_cursor_info = NULL;
void SDLSetMouseCursor(struct MouseCursorInfo *cursor_info)
{
static struct MouseCursorInfo *last_cursor_info = NULL;
+ static struct MouseCursorInfo *last_cursor_info2 = NULL;
static SDL_Cursor *cursor_default = NULL;
static SDL_Cursor *cursor_current = NULL;
static SDL_Cursor *cursor_default = NULL;
static SDL_Cursor *cursor_current = NULL;
+ /* if invoked for the first time, store the SDL default cursor */
if (cursor_default == NULL)
cursor_default = SDL_GetCursor();
if (cursor_default == NULL)
cursor_default = SDL_GetCursor();
+ /* only create new cursor if cursor info (custom only) has changed */
if (cursor_info != NULL && cursor_info != last_cursor_info)
{
cursor_current = create_cursor(cursor_info);
last_cursor_info = cursor_info;
}
if (cursor_info != NULL && cursor_info != last_cursor_info)
{
cursor_current = create_cursor(cursor_info);
last_cursor_info = cursor_info;
}
- SDL_SetCursor(cursor_info ? cursor_current : cursor_default);
+ /* only set new cursor if cursor info (custom or NULL) has changed */
+ if (cursor_info != last_cursor_info2)
+ SDL_SetCursor(cursor_info ? cursor_current : cursor_default);
+
+ last_cursor_info2 = cursor_info;
}
}