projects
/
rocksndiamonds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
rnd-20050807-1-src
[rocksndiamonds.git]
/
src
/
libgame
/
sdl.c
diff --git
a/src/libgame/sdl.c
b/src/libgame/sdl.c
index 95ef6eef6e9d97dcf3f724c45a1febc7af3d2022..b127c7844055152de46fc5f8474abd93c5be1237 100644
(file)
--- a/
src/libgame/sdl.c
+++ b/
src/libgame/sdl.c
@@
-71,7
+71,7
@@
inline void SDLInitVideoBuffer(DrawBuffer **backbuffer, DrawWindow **window,
fullscreen_yoffset = 0;
#ifdef FULLSCREEN_BUG
fullscreen_yoffset = 0;
#ifdef FULLSCREEN_BUG
- for (i
=
0; screen_xy[i][0] != -1; i++)
+ for (i
=
0; screen_xy[i][0] != -1; i++)
{
if (video.width <= screen_xy[i][0] && video.height <= screen_xy[i][1])
{
{
if (video.width <= screen_xy[i][0] && video.height <= screen_xy[i][1])
{
@@
-340,11
+340,11
@@
inline void SDLDrawLines(SDL_Surface *surface, struct XY *points,
int i, x, y;
int line_width = 4;
int i, x, y;
int line_width = 4;
- for (i
=0; i<
num_points - 1; i++)
+ for (i
= 0; i <
num_points - 1; i++)
{
{
- for (x
=0; x<
line_width; x++)
+ for (x
= 0; x <
line_width; x++)
{
{
- for (y
=0; y<
line_width; y++)
+ for (y
= 0; y <
line_width; y++)
{
int dx = x - line_width / 2;
int dy = y - line_width / 2;
{
int dx = x - line_width / 2;
int dy = y - line_width / 2;
@@
-889,9
+889,9
@@
inline void SDLInvertArea(Bitmap *bitmap, int src_x, int src_y,
{
int x, y;
{
int x, y;
- for (y
=
src_y; y < src_y + height; y++)
+ for (y
=
src_y; y < src_y + height; y++)
{
{
- for (x
=
src_x; x < src_x + width; x++)
+ for (x
=
src_x; x < src_x + width; x++)
{
Uint32 pixel = SDLGetPixel(bitmap, x, y);
{
Uint32 pixel = SDLGetPixel(bitmap, x, y);
@@
-906,9
+906,9
@@
inline void SDLCopyInverseMasked(Bitmap *src_bitmap, Bitmap *dst_bitmap,
{
int x, y;
{
int x, y;
- for (y
=
0; y < height; y++)
+ for (y
=
0; y < height; y++)
{
{
- for (x
=
0; x < width; x++)
+ for (x
=
0; x < width; x++)
{
Uint32 pixel = SDLGetPixel(src_bitmap, src_x + x, src_y + y);
{
Uint32 pixel = SDLGetPixel(src_bitmap, src_x + x, src_y + y);
@@
-1116,9
+1116,8
@@
int zoomSurfaceY(SDL_Surface * src, SDL_Surface * dst)
-----------------------------------------------------------------------------
zoomSurface()
-----------------------------------------------------------------------------
zoomSurface()
- Zoom
e
s a 32bit or 8bit 'src' surface to newly created 'dst' surface.
+ Zooms a 32bit or 8bit 'src' surface to newly created 'dst' surface.
'zoomx' and 'zoomy' are scaling factors for width and height.
'zoomx' and 'zoomy' are scaling factors for width and height.
- If 'smooth' is 1 then the destination 32bit surface is anti-aliased.
If the surface is not 8bit or 32bit RGBA/ABGR it will be converted
into a 32bit RGBA format on the fly.
-----------------------------------------------------------------------------
If the surface is not 8bit or 32bit RGBA/ABGR it will be converted
into a 32bit RGBA format on the fly.
-----------------------------------------------------------------------------
@@
-1181,7
+1180,7
@@
SDL_Surface *zoomSurface(SDL_Surface *src, int dst_width, int dst_height)
else
{
/* copy palette */
else
{
/* copy palette */
- for (i
=
0; i < zoom_src->format->palette->ncolors; i++)
+ for (i
=
0; i < zoom_src->format->palette->ncolors; i++)
zoom_dst->format->palette->colors[i] =
zoom_src->format->palette->colors[i];
zoom_dst->format->palette->ncolors = zoom_src->format->palette->ncolors;
zoom_dst->format->palette->colors[i] =
zoom_src->format->palette->colors[i];
zoom_dst->format->palette->ncolors = zoom_src->format->palette->ncolors;
@@
-1277,19
+1276,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;
}
}
@@
-1434,6
+1440,7
@@
void HandleJoystickEvent(Event *event)
void SDLInitJoysticks()
{
static boolean sdl_joystick_subsystem_initialized = FALSE;
void SDLInitJoysticks()
{
static boolean sdl_joystick_subsystem_initialized = FALSE;
+ boolean print_warning = !sdl_joystick_subsystem_initialized;
int i;
if (!sdl_joystick_subsystem_initialized)
int i;
if (!sdl_joystick_subsystem_initialized)
@@
-1447,17
+1454,25
@@
void SDLInitJoysticks()
}
}
}
}
- for (i
=0; i<
MAX_PLAYERS; i++)
+ for (i
= 0; i <
MAX_PLAYERS; i++)
{
char *device_name = setup.input[i].joy.device_name;
int joystick_nr = getJoystickNrFromDeviceName(device_name);
if (joystick_nr >= SDL_NumJoysticks())
{
char *device_name = setup.input[i].joy.device_name;
int joystick_nr = getJoystickNrFromDeviceName(device_name);
if (joystick_nr >= SDL_NumJoysticks())
+ {
+ if (setup.input[i].use_joystick && print_warning)
+ Error(ERR_WARN, "cannot find joystick %d", joystick_nr);
+
joystick_nr = -1;
joystick_nr = -1;
+ }
/* misuse joystick file descriptor variable to store joystick number */
joystick.fd[i] = joystick_nr;
/* misuse joystick file descriptor variable to store joystick number */
joystick.fd[i] = joystick_nr;
+ if (joystick_nr == -1)
+ continue;
+
/* this allows subsequent calls to 'InitJoysticks' for re-initialization */
if (SDLCheckJoystickOpened(joystick_nr))
SDLCloseJoystick(joystick_nr);
/* this allows subsequent calls to 'InitJoysticks' for re-initialization */
if (SDLCheckJoystickOpened(joystick_nr))
SDLCloseJoystick(joystick_nr);
@@
-1467,7
+1482,9
@@
void SDLInitJoysticks()
if (!SDLOpenJoystick(joystick_nr))
{
if (!SDLOpenJoystick(joystick_nr))
{
- Error(ERR_WARN, "cannot open joystick %d", joystick_nr);
+ if (print_warning)
+ Error(ERR_WARN, "cannot open joystick %d", joystick_nr);
+
continue;
}
continue;
}