Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Fixed double-mouse event bug on Windows using OpenGL
- Loading branch information
|
@@ -16,6 +16,7 @@ <H2> |
|
|
Major changes since SDL 1.0.0: |
|
|
</H2> |
|
|
<UL> |
|
|
<LI> 1.2.1: Fixed double-mouse event bug on Windows using OpenGL |
|
|
<LI> 1.2.1: Fixed 320x200 video mode on framebuffer console |
|
|
<LI> 1.2.1: Improved robustness for the ELO touchpad (thanks Alex!) |
|
|
<LI> 1.2.1: Added support for building under Cygwin on Windows |
|
|
|
@@ -35,13 +35,19 @@ static char rcsid = |
|
|
/* Hidden "this" pointer for the video functions */ |
|
|
#define _THIS SDL_VideoDevice *this |
|
|
|
|
|
#define DIRECTX_FULLSCREEN() \ |
|
|
#define DDRAW_FULLSCREEN() \ |
|
|
( \ |
|
|
((SDL_VideoSurface->flags & SDL_FULLSCREEN) == SDL_FULLSCREEN) && \ |
|
|
((SDL_VideoSurface->flags & SDL_OPENGL ) != SDL_OPENGL ) && \ |
|
|
(strcmp(this->name, "directx") == 0) \ |
|
|
) |
|
|
|
|
|
#define DINPUT_FULLSCREEN() \ |
|
|
( \ |
|
|
((SDL_VideoSurface->flags & SDL_FULLSCREEN) == SDL_FULLSCREEN) && \ |
|
|
(strcmp(this->name, "directx") == 0) \ |
|
|
) |
|
|
|
|
|
/* The main window -- and a function to set it for the audio */ |
|
|
extern const char *SDL_Appname; |
|
|
extern HINSTANCE SDL_Instance; |
|
|
|
@@ -200,7 +200,7 @@ static LONG CALLBACK WinMessage(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPara |
|
|
case WM_MOUSEMOVE: { |
|
|
|
|
|
/* Mouse is handled by DirectInput when fullscreen */ |
|
|
if ( SDL_VideoSurface && ! DIRECTX_FULLSCREEN() ) { |
|
|
if ( SDL_VideoSurface && ! DINPUT_FULLSCREEN() ) { |
|
|
Sint16 x, y; |
|
|
|
|
|
/* mouse has entered the window */ |
|
@@ -243,7 +243,7 @@ static LONG CALLBACK WinMessage(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPara |
|
|
case WM_MOUSELEAVE: { |
|
|
|
|
|
/* Mouse is handled by DirectInput when fullscreen */ |
|
|
if ( SDL_VideoSurface && ! DIRECTX_FULLSCREEN() ) { |
|
|
if ( SDL_VideoSurface && ! DINPUT_FULLSCREEN() ) { |
|
|
/* mouse has left the window */ |
|
|
/* or */ |
|
|
/* Elvis has left the building! */ |
|
@@ -261,7 +261,7 @@ static LONG CALLBACK WinMessage(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPara |
|
|
case WM_RBUTTONDOWN: |
|
|
case WM_RBUTTONUP: { |
|
|
/* Mouse is handled by DirectInput when fullscreen */ |
|
|
if ( SDL_VideoSurface && ! DIRECTX_FULLSCREEN() ) { |
|
|
if ( SDL_VideoSurface && ! DINPUT_FULLSCREEN() ) { |
|
|
Sint16 x, y; |
|
|
Uint8 button, state; |
|
|
|
|
|
|
@@ -192,7 +192,7 @@ int WIN_ShowWMCursor(_THIS, WMcursor *cursor) |
|
|
POINT mouse_pos; |
|
|
|
|
|
/* The fullscreen cursor must be done in software with DirectInput */ |
|
|
if ( !this->screen || DIRECTX_FULLSCREEN() ) { |
|
|
if ( !this->screen || DDRAW_FULLSCREEN() ) { |
|
|
return(0); |
|
|
} |
|
|
|
|
@@ -213,7 +213,7 @@ void WIN_WarpWMCursor(_THIS, Uint16 x, Uint16 y) |
|
|
{ |
|
|
POINT pt; |
|
|
|
|
|
if ( DIRECTX_FULLSCREEN() ) { |
|
|
if ( DDRAW_FULLSCREEN() ) { |
|
|
x += (this->screen->offset % this->screen->pitch) / |
|
|
this->screen->format->BytesPerPixel; |
|
|
y += (this->screen->offset / this->screen->pitch); |
|
@@ -237,7 +237,7 @@ void WIN_UpdateMouse(_THIS) |
|
|
RECT rect; |
|
|
POINT pt; |
|
|
|
|
|
if ( ! DIRECTX_FULLSCREEN() ) { |
|
|
if ( ! DDRAW_FULLSCREEN() ) { |
|
|
GetClientRect(SDL_Window, &rect); |
|
|
GetCursorPos(&pt); |
|
|
MapWindowPoints(NULL, SDL_Window, &pt, 1); |
|
|