Skip to content

Commit

Permalink
Batch x11 dga mouse motion events into a single SDL event.
Browse files Browse the repository at this point in the history
Untested attempt to fix Bugzilla #609. Do not merge into 1.3 in any case.
  • Loading branch information
icculus committed Sep 29, 2009
1 parent d1e8b0a commit 1ff5780
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 3 deletions.
16 changes: 13 additions & 3 deletions src/video/x11/SDL_x11events.c
Expand Up @@ -515,9 +515,9 @@ printf("KeymapNotify!\n");
#ifdef DEBUG_MOTION
printf("DGA motion: %d,%d\n", xevent.xmotion.x_root, xevent.xmotion.y_root);
#endif
posted = SDL_PrivateMouseMotion(0, 1,
xevent.xmotion.x_root,
xevent.xmotion.y_root);
/* batch DGA motion into one event, queued later. */
dga_x += xevent.xmotion.x_root;
dga_y += xevent.xmotion.y_root;
} else {
posted = X11_WarpedMotion(this,&xevent);
}
Expand Down Expand Up @@ -931,6 +931,16 @@ void X11_PumpEvents(_THIS)
X11_DispatchEvent(this);
++pending;
}

/* We batch up all the DGA motion events and generate a single SDL
event from them, since newer x.org releases might send a LOT of
these at once and flood the SDL event queue. --ryan. */
if (dga_x || dga_y) {
SDL_PrivateMouseMotion(0, 1, dga_x, dga_y);
dga_x = 0;
dga_y = 0;
}

if ( switch_waiting ) {
Uint32 now;

Expand Down
4 changes: 4 additions & 0 deletions src/video/x11/SDL_x11video.h
Expand Up @@ -70,6 +70,8 @@ struct SDL_PrivateVideoData {

/* Direct Graphics Access extension information */
int using_dga;
Sint16 dga_x;
Sint16 dga_y;

#ifndef NO_SHARED_MEMORY
/* MIT shared memory extension information */
Expand Down Expand Up @@ -172,6 +174,8 @@ struct SDL_PrivateVideoData {
#define SDL_IC (this->hidden->X11_IC)
#define SDL_windowid (this->hidden->SDL_windowid)
#define using_dga (this->hidden->using_dga)
#define dga_x (this->hidden->dga_x)
#define dga_y (this->hidden->dga_y)
#define use_mitshm (this->hidden->use_mitshm)
#define shminfo (this->hidden->shminfo)
#define SDL_Ximage (this->hidden->Ximage)
Expand Down

0 comments on commit 1ff5780

Please sign in to comment.