mirror of
https://github.com/yann64/haikuports.git
synced 2026-05-05 14:38:51 +02:00
102 lines
2.9 KiB
Diff
102 lines
2.9 KiB
Diff
diff -Naur libsdl-1.2-hg/src/video/bwindow/SDL_BWin.h libsdl-1.2-hg-haiku/src/video/bwindow/SDL_BWin.h
|
|
--- libsdl-1.2-hg/src/video/bwindow/SDL_BWin.h 2011-05-02 18:59:38.000000000 -0300
|
|
+++ libsdl-1.2-hg-haiku/src/video/bwindow/SDL_BWin.h 2011-05-02 19:04:14.842792960 -0300
|
|
@@ -112,7 +112,7 @@
|
|
if ( SDL_GLView == NULL ) {
|
|
SDL_GLView = new BGLView(Bounds(), "SDL GLView",
|
|
B_FOLLOW_ALL_SIDES, (B_WILL_DRAW|B_FRAME_EVENTS),
|
|
- gl_flags);
|
|
+ gl_flags|BGL_DOUBLE);
|
|
SDL_GLView->EnableDirectMode(true);
|
|
}
|
|
if ( the_view != SDL_GLView ) {
|
|
@@ -133,17 +133,17 @@
|
|
}
|
|
if ( the_view != SDL_View ) {
|
|
if ( the_view ) {
|
|
-#if SDL_VIDEO_OPENGL
|
|
- if ( the_view == SDL_GLView ) {
|
|
- SDL_GLView->UnlockGL();
|
|
- }
|
|
-#endif
|
|
RemoveChild(the_view);
|
|
}
|
|
AddChild(SDL_View);
|
|
the_view = SDL_View;
|
|
}
|
|
}
|
|
+#if SDL_VIDEO_OPENGL
|
|
+ if ( the_view == SDL_GLView ) {
|
|
+ SDL_GLView->UnlockGL();
|
|
+ }
|
|
+#endif
|
|
Unlock();
|
|
return(retval);
|
|
}
|
|
@@ -191,8 +191,8 @@
|
|
#if SDL_VIDEO_OPENGL
|
|
virtual void SwapBuffers(void) {
|
|
SDL_GLView->UnlockGL();
|
|
- SDL_GLView->LockGL();
|
|
SDL_GLView->SwapBuffers();
|
|
+ SDL_GLView->LockGL();
|
|
}
|
|
#endif
|
|
virtual BView *View(void) {
|
|
@@ -215,6 +215,11 @@
|
|
the application should respond to the quit request,
|
|
or ignore it as desired.
|
|
*/
|
|
+#if SDL_VIDEO_OPENGL
|
|
+ if ( SDL_GLView != NULL ) {
|
|
+ SDL_GLView->EnableDirectMode(false);
|
|
+ }
|
|
+#endif
|
|
return(false);
|
|
}
|
|
return(true); /* Close the app window */
|
|
diff -Naur libsdl-1.2-hg/src/video/bwindow/SDL_sysevents.cc libsdl-1.2-hg-haiku/src/video/bwindow/SDL_sysevents.cc
|
|
--- libsdl-1.2-hg/src/video/bwindow/SDL_sysevents.cc 2011-05-02 18:59:38.000000000 -0300
|
|
+++ libsdl-1.2-hg-haiku/src/video/bwindow/SDL_sysevents.cc 2011-05-02 19:06:13.034865152 -0300
|
|
@@ -36,6 +36,7 @@
|
|
#include "../../events/SDL_sysevents.h"
|
|
#include "../../events/SDL_events_c.h"
|
|
#include "SDL_sysevents_c.h"
|
|
+#include "../SDL_cursor_c.h"
|
|
|
|
void BE_PumpEvents(_THIS)
|
|
{
|
|
@@ -203,11 +204,21 @@
|
|
if (transit == B_EXITED_VIEW) {
|
|
if ( SDL_GetAppState() & SDL_APPMOUSEFOCUS ) {
|
|
SDL_PrivateAppActive(0, SDL_APPMOUSEFOCUS);
|
|
+#if SDL_VIDEO_OPENGL
|
|
+ // for some reason, SDL_EraseCursor fails for OpenGL
|
|
+ if (this->the_view != this->SDL_GLView)
|
|
+#endif
|
|
+ SDL_EraseCursor(SDL_VideoSurface);
|
|
be_app->SetCursor(B_HAND_CURSOR);
|
|
}
|
|
} else {
|
|
if ( !(SDL_GetAppState() & SDL_APPMOUSEFOCUS) ) {
|
|
SDL_PrivateAppActive(1, SDL_APPMOUSEFOCUS);
|
|
+#if SDL_VIDEO_OPENGL
|
|
+ // for some reason, SDL_EraseCursor fails for OpenGL
|
|
+ if (this->the_view != this->SDL_GLView)
|
|
+#endif
|
|
+ SDL_EraseCursor(SDL_VideoSurface);
|
|
SDL_SetCursor(NULL);
|
|
}
|
|
|
|
@@ -395,4 +406,10 @@
|
|
default:
|
|
break;
|
|
}
|
|
+#if SDL_VIDEO_OPENGL
|
|
+ // If it is a BGLView, it is apparently required to
|
|
+ // call DirectConnected() on it as well
|
|
+ if (this->the_view == this->SDL_GLView)
|
|
+ this->SDL_GLView->DirectConnected(info);
|
|
+#endif
|
|
}
|