ptitSeb
Serial Porter
On the OpenPandora, currently, when in GLES Mode, using some Mouse function Freeze the App.
This is annoying, and render port more complicated (or crippled the port).
I hopen this thread so we can find some solution...
Here is the problem.
Once SDL initalised with EGL, a call to
SDL_WarpMouse(x, y);
Freeze the app.
*EDIT*
I have a diff for SDL that seems to solve all hard freeze / mini freeze with Grabbed Mouse and GLES: seb.zip here is the diff.
* I didn't found a way to exit cleanly, every time I have to Reset the Pandora. => If anyone has a solution to exit / kill the freezed software correctly ?
Using SDL 1.2.15, we see that:
* The SDL_WarpMouse first updates some internal variables (used for relative mouse movement). and then call video->WarpWMCursor(x, y)
if the video->WarpWMCursor exist of course.
Assuming we are using X11 as a video driver, the function is this :
void X11_WarpWMCursor(_THIS, Uint16 x, Uint16 y)
{
if ( using_dga & DGA_MOUSE ) {
SDL_PrivateMouseMotion(0, 0, x, y);
} else if ( mouse_relative) {
/* RJR: March 28, 2000
leave physical cursor at center of screen if
mouse hidden and grabbed */
SDL_PrivateMouseMotion(0, 0, x, y);
} else {
SDL_Lock_EventThread();
XWarpPointer(SDL_Display, None, SDL_Window, 0, 0, 0, 0, x, y);
XSync(SDL_Display, False);
SDL_Unlock_EventThread();
}
}
Any idea on what's next ?
This is annoying, and render port more complicated (or crippled the port).
I hopen this thread so we can find some solution...
Here is the problem.
Once SDL initalised with EGL, a call to
SDL_WarpMouse(x, y);
Freeze the app.
*EDIT*
I have a diff for SDL that seems to solve all hard freeze / mini freeze with Grabbed Mouse and GLES: seb.zip here is the diff.
* I didn't found a way to exit cleanly, every time I have to Reset the Pandora. => If anyone has a solution to exit / kill the freezed software correctly ?
Using SDL 1.2.15, we see that:
* The SDL_WarpMouse first updates some internal variables (used for relative mouse movement). and then call video->WarpWMCursor(x, y)
if the video->WarpWMCursor exist of course.
Assuming we are using X11 as a video driver, the function is this :
void X11_WarpWMCursor(_THIS, Uint16 x, Uint16 y)
{
if ( using_dga & DGA_MOUSE ) {
SDL_PrivateMouseMotion(0, 0, x, y);
} else if ( mouse_relative) {
/* RJR: March 28, 2000
leave physical cursor at center of screen if
mouse hidden and grabbed */
SDL_PrivateMouseMotion(0, 0, x, y);
} else {
SDL_Lock_EventThread();
XWarpPointer(SDL_Display, None, SDL_Window, 0, 0, 0, 0, x, y);
XSync(SDL_Display, False);
SDL_Unlock_EventThread();
}
}
Any idea on what's next ?
Last edited by a moderator: