# HG changeset patch
# User Sam Lantinga
+ Added SDL_BUTTON_WHEELLEFT (6) and SDL_BUTTON_WHEELRIGHT (7) +
+Fixed buffer overrun crash when resampling audio rates.
diff -r a19fd8bcdd52 -r 1146681dbb74 include/SDL_mouse.h --- a/include/SDL_mouse.h Fri Jul 06 07:45:33 2007 +0000 +++ b/include/SDL_mouse.h Fri Jul 06 09:15:43 2007 +0000 @@ -115,6 +115,8 @@ Button 3: Right mouse button Button 4: Mouse wheel up (may also be a real button) Button 5: Mouse wheel down (may also be a real button) + Button 6: Mouse wheel left (may also be a real button) + Button 7: Mouse wheel right (may also be a real button) */ #define SDL_BUTTON(X) (1 << ((X)-1)) #define SDL_BUTTON_LEFT 1 @@ -122,6 +124,8 @@ #define SDL_BUTTON_RIGHT 3 #define SDL_BUTTON_WHEELUP 4 #define SDL_BUTTON_WHEELDOWN 5 +#define SDL_BUTTON_WHEELLEFT 6 +#define SDL_BUTTON_WHEELRIGHT 7 #define SDL_BUTTON_LMASK SDL_BUTTON(SDL_BUTTON_LEFT) #define SDL_BUTTON_MMASK SDL_BUTTON(SDL_BUTTON_MIDDLE) #define SDL_BUTTON_RMASK SDL_BUTTON(SDL_BUTTON_RIGHT) diff -r a19fd8bcdd52 -r 1146681dbb74 src/video/bwindow/SDL_sysevents.cc --- a/src/video/bwindow/SDL_sysevents.cc Fri Jul 06 07:45:33 2007 +0000 +++ b/src/video/bwindow/SDL_sysevents.cc Fri Jul 06 09:15:43 2007 +0000 @@ -294,12 +294,23 @@ float x, y; x = y = 0; if (msg->FindFloat("be:wheel_delta_x", &x) == B_OK && msg->FindFloat("be:wheel_delta_y", &y) == B_OK) { - if (x < 0 || y < 0) { - SDL_PrivateMouseButton(SDL_PRESSED, SDL_BUTTON_WHEELDOWN, 0, 0); - SDL_PrivateMouseButton(SDL_RELEASED, SDL_BUTTON_WHEELDOWN, 0, 0); - } else if (x > 0 || y > 0) { - SDL_PrivateMouseButton(SDL_PRESSED, SDL_BUTTON_WHEELUP, 0, 0); - SDL_PrivateMouseButton(SDL_RELEASED, SDL_BUTTON_WHEELUP, 0, 0); + if ( y ) { + if (y < 0) { + SDL_PrivateMouseButton(SDL_PRESSED, SDL_BUTTON_WHEELDOWN, 0, 0); + SDL_PrivateMouseButton(SDL_RELEASED, SDL_BUTTON_WHEELDOWN, 0, 0); + } else { + SDL_PrivateMouseButton(SDL_PRESSED, SDL_BUTTON_WHEELUP, 0, 0); + SDL_PrivateMouseButton(SDL_RELEASED, SDL_BUTTON_WHEELUP, 0, 0); + } + } + if ( x ) { + if (x < 0) { + SDL_PrivateMouseButton(SDL_PRESSED, SDL_BUTTON_WHEELRIGHT, 0, 0); + SDL_PrivateMouseButton(SDL_RELEASED, SDL_BUTTON_WHEELRIGHT, 0, 0); + } else { + SDL_PrivateMouseButton(SDL_PRESSED, SDL_BUTTON_WHEELLEFT, 0, 0); + SDL_PrivateMouseButton(SDL_RELEASED, SDL_BUTTON_WHEELLEFT, 0, 0); + } } } break; diff -r a19fd8bcdd52 -r 1146681dbb74 src/video/quartz/SDL_QuartzEvents.m --- a/src/video/quartz/SDL_QuartzEvents.m Fri Jul 06 07:45:33 2007 +0000 +++ b/src/video/quartz/SDL_QuartzEvents.m Fri Jul 06 09:15:43 2007 +0000 @@ -932,13 +932,24 @@ Uint8 button; dy = [ event deltaY ]; dx = [ event deltaX ]; - if ( dy > 0.0 || dx > 0.0 ) /* Scroll up */ - button = SDL_BUTTON_WHEELUP; - else /* Scroll down */ - button = SDL_BUTTON_WHEELDOWN; - /* For now, wheel is sent as a quick down+up */ - SDL_PrivateMouseButton (SDL_PRESSED, button, 0, 0); - SDL_PrivateMouseButton (SDL_RELEASED, button, 0, 0); + if ( dy ) { + if ( dy > 0.0 ) /* Scroll up */ + button = SDL_BUTTON_WHEELUP; + else /* Scroll down */ + button = SDL_BUTTON_WHEELDOWN; + /* For now, wheel is sent as a quick down+up */ + SDL_PrivateMouseButton (SDL_PRESSED, button, 0, 0); + SDL_PrivateMouseButton (SDL_RELEASED, button, 0, 0); + } + if ( dx ) { + if ( dx > 0.0 ) /* Scroll left */ + button = SDL_BUTTON_WHEELLEFT; + else /* Scroll right */ + button = SDL_BUTTON_WHEELRIGHT; + /* For now, wheel is sent as a quick down+up */ + SDL_PrivateMouseButton (SDL_PRESSED, button, 0, 0); + SDL_PrivateMouseButton (SDL_RELEASED, button, 0, 0); + } } break; case NSKeyUp: