Commit ae2275c2 authored by Patrice Mandin's avatar Patrice Mandin

Check video driver mouse cursor pointers before using them

--HG--
branch : SDL-1.2
extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/branches/SDL-1.2%402234
parent 8061a35d
...@@ -188,7 +188,7 @@ void SDL_SetCursor (SDL_Cursor *cursor) ...@@ -188,7 +188,7 @@ void SDL_SetCursor (SDL_Cursor *cursor)
it needs to hide the old cursor before (possibly) it needs to hide the old cursor before (possibly)
showing the new one. (But don't erase NULL cursor) showing the new one. (But don't erase NULL cursor)
*/ */
if ( SDL_cursor ) { if ( SDL_cursor && video->ShowWMCursor ) {
video->ShowWMCursor(this, NULL); video->ShowWMCursor(this, NULL);
} }
} }
...@@ -198,8 +198,11 @@ void SDL_SetCursor (SDL_Cursor *cursor) ...@@ -198,8 +198,11 @@ void SDL_SetCursor (SDL_Cursor *cursor)
/* Draw the new mouse cursor */ /* Draw the new mouse cursor */
if ( SDL_cursor && (SDL_cursorstate&CURSOR_VISIBLE) ) { if ( SDL_cursor && (SDL_cursorstate&CURSOR_VISIBLE) ) {
/* Use window manager cursor if possible */ /* Use window manager cursor if possible */
if ( SDL_cursor->wm_cursor && int show_wm_cursor = 0;
video->ShowWMCursor(this, SDL_cursor->wm_cursor) ) { if ( SDL_cursor->wm_cursor && video->ShowWMCursor ) {
show_wm_cursor = video->ShowWMCursor(this, SDL_cursor->wm_cursor);
}
if ( show_wm_cursor ) {
SDL_cursorstate &= ~CURSOR_USINGSW; SDL_cursorstate &= ~CURSOR_USINGSW;
} else { } else {
SDL_cursorstate |= CURSOR_USINGSW; SDL_cursorstate |= CURSOR_USINGSW;
...@@ -219,7 +222,9 @@ void SDL_SetCursor (SDL_Cursor *cursor) ...@@ -219,7 +222,9 @@ void SDL_SetCursor (SDL_Cursor *cursor)
SDL_EraseCursor(SDL_VideoSurface); SDL_EraseCursor(SDL_VideoSurface);
} else { } else {
if ( video ) { if ( video ) {
video->ShowWMCursor(this, NULL); if ( video->ShowWMCursor ) {
video->ShowWMCursor(this, NULL);
}
} }
} }
} }
...@@ -248,7 +253,9 @@ void SDL_FreeCursor (SDL_Cursor *cursor) ...@@ -248,7 +253,9 @@ void SDL_FreeCursor (SDL_Cursor *cursor)
SDL_free(cursor->save[0]); SDL_free(cursor->save[0]);
} }
if ( video && cursor->wm_cursor ) { if ( video && cursor->wm_cursor ) {
video->FreeWMCursor(this, cursor->wm_cursor); if ( video->FreeWMCursor ) {
video->FreeWMCursor(this, cursor->wm_cursor);
}
} }
SDL_free(cursor); SDL_free(cursor);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment