raspberry: Fixed missing mouse cursor (thanks, Joe!)
"Starting with changeset 12433, the mouse cursor is not displayed on the Raspberry Pi platform, due to a bug in the handling of the new "global_cursor" in RPI_ShowCursor(). Currently, if cursor == global_cursor, the function immediately returns 0. The function should not return here. Instead, if cursor == global_cursor, it shouldn't try to hide the current cursor and update global_cursor = cursor. However, it *should* still continue through the rest of the function." Fixes Bugzilla #4699.
parent
d5ebbcb4e5
commit
d2058b45ae
|
@ -132,19 +132,21 @@ RPI_ShowCursor(SDL_Cursor * cursor)
|
|||
return 0;
|
||||
}
|
||||
|
||||
if (global_cursor != NULL) {
|
||||
curdata = (RPI_CursorData *) global_cursor->driverdata;
|
||||
if (curdata && curdata->element > DISPMANX_NO_HANDLE) {
|
||||
update = vc_dispmanx_update_start(0);
|
||||
SDL_assert(update);
|
||||
ret = vc_dispmanx_element_remove(update, curdata->element);
|
||||
SDL_assert(ret == DISPMANX_SUCCESS);
|
||||
ret = vc_dispmanx_update_submit_sync(update);
|
||||
SDL_assert(ret == DISPMANX_SUCCESS);
|
||||
curdata->element = DISPMANX_NO_HANDLE;
|
||||
if (cursor != global_cursor) {
|
||||
if (global_cursor != NULL) {
|
||||
curdata = (RPI_CursorData *) global_cursor->driverdata;
|
||||
if (curdata && curdata->element > DISPMANX_NO_HANDLE) {
|
||||
update = vc_dispmanx_update_start(0);
|
||||
SDL_assert(update);
|
||||
ret = vc_dispmanx_element_remove(update, curdata->element);
|
||||
SDL_assert(ret == DISPMANX_SUCCESS);
|
||||
ret = vc_dispmanx_update_submit_sync(update);
|
||||
SDL_assert(ret == DISPMANX_SUCCESS);
|
||||
curdata->element = DISPMANX_NO_HANDLE;
|
||||
}
|
||||
}
|
||||
global_cursor = cursor;
|
||||
}
|
||||
global_cursor = cursor;
|
||||
|
||||
if (cursor == NULL) {
|
||||
return 0;
|
||||
|
|
Loading…
Reference in New Issue