From 3f0701d67fbbd5398c8c7cdbc41faa62d16aea85 Mon Sep 17 00:00:00 2001
From: Jerome Duval <jerome.duval@gmail.com>
Date: Fri, 29 Aug 2014 15:24:11 +0000
Subject: haiku patch


diff --git a/configure.in b/configure.in
index 3d8a2de..aab5ced 100644
--- a/configure.in
+++ b/configure.in
@@ -276,7 +276,7 @@ if test x$enable_libc = xyes; then
     AC_CHECK_LIB(iconv, iconv_open, [LIBS="$LIBS -liconv"; EXTRA_LDFLAGS="$EXTRA_LDFLAGS -liconv"])
     AC_CHECK_FUNCS(iconv)
 
-    AC_CHECK_MEMBER(struct sigaction.sa_sigaction,[AC_DEFINE(HAVE_SA_SIGACTION)], ,[#include <signal.h>])
+    AC_CHECK_MEMBER(struct sigaction.sa_sigaction,[AC_DEFINE([HAVE_SA_SIGACTION], [], [Description])], ,[#include <signal.h>])
 fi
 
 dnl AC_CHECK_SIZEOF(void*)
@@ -1427,7 +1427,7 @@ AC_HELP_STRING([--enable-x11-shared], [dynamically load X11 support [[default=ma
             ],[
             ],[
             have_const_param_XextAddDisplay=yes
-            AC_DEFINE(SDL_VIDEO_DRIVER_X11_CONST_PARAM_XEXTADDDISPLAY)
+            AC_DEFINE([SDL_VIDEO_DRIVER_X11_CONST_PARAM_XEXTADDDISPLAY], [], [Description])
             ])
             AC_MSG_RESULT($have_const_param_XextAddDisplay)
 
@@ -1439,7 +1439,7 @@ AC_HELP_STRING([--enable-x11-shared], [dynamically load X11 support [[default=ma
 	    ],[
 	    ],[
 	    have_const_param_xdata32=yes
-	    AC_DEFINE(SDL_VIDEO_DRIVER_X11_CONST_PARAM_XDATA32)
+	    AC_DEFINE([SDL_VIDEO_DRIVER_X11_CONST_PARAM_XDATA32], [], [Description])
 	    ])
 	    AC_MSG_RESULT($have_const_param_xdata32)
 
@@ -1457,7 +1457,7 @@ XGetEventData(display, cookie);
 XFreeEventData(display, cookie);
             ],[
                 have_XGenericEvent=yes
-                AC_DEFINE(SDL_VIDEO_DRIVER_X11_SUPPORTS_GENERIC_EVENTS)
+                AC_DEFINE([SDL_VIDEO_DRIVER_X11_SUPPORTS_GENERIC_EVENTS], [], [Description])
             ])
             AC_MSG_RESULT($have_XGenericEvent)
 
@@ -1557,7 +1557,7 @@ int event_type = XI_TouchBegin;
 XITouchClassInfo *t;
             	],[
             	have_xinput2_multitouch=yes
-            	AC_DEFINE(SDL_VIDEO_DRIVER_X11_XINPUT2_SUPPORTS_MULTITOUCH)
+            	AC_DEFINE([SDL_VIDEO_DRIVER_X11_XINPUT2_SUPPORTS_MULTITOUCH], [], [Description])
                 SUMMARY_video_x11="${SUMMARY_video_x11} xinput2_multitouch"
             	])
             	AC_MSG_RESULT($have_xinput2_multitouch)
@@ -2281,7 +2281,7 @@ AC_HELP_STRING([--enable-pthread-sem], [use pthread semaphores [[default=yes]]])
                   sem_timedwait(NULL, NULL);
                 ],[
                 have_sem_timedwait=yes
-                AC_DEFINE(HAVE_SEM_TIMEDWAIT)
+                AC_DEFINE([HAVE_SEM_TIMEDWAIT], [], [Description])
                 ])
                 AC_MSG_RESULT($have_sem_timedwait)
             fi
@@ -2936,7 +2936,7 @@ AC_HELP_STRING([--enable-render-d3d], [enable the Direct3D render driver [[defau
         fi
         # The Haiku platform requires special setup.
         SOURCES="$srcdir/src/main/haiku/*.cc $SOURCES"
-        EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lroot -lbe -lmedia -lgame -ldevice -ltextencoding"
+        EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lroot -lbe -lmedia -lgame -ldevice -ltextencoding -lstdc++.r4"
         ;;
     arm*-apple-darwin*)
         # iOS - We are not writing anything to confdefs.h because you have to replace
diff --git a/src/thread/pthread/SDL_systhread.c b/src/thread/pthread/SDL_systhread.c
index b570b2a..80dfa1c 100644
--- a/src/thread/pthread/SDL_systhread.c
+++ b/src/thread/pthread/SDL_systhread.c
@@ -52,7 +52,7 @@
 #endif
 
 #ifdef __HAIKU__
-#include <be/kernel/OS.h>
+#include <kernel/OS.h>
 #endif
 
 #include "SDL_assert.h"
diff --git a/src/video/haiku/SDL_BWin.h b/src/video/haiku/SDL_BWin.h
index e6de5b0..e8aeabf 100644
--- a/src/video/haiku/SDL_BWin.h
+++ b/src/video/haiku/SDL_BWin.h
@@ -38,9 +38,9 @@ extern "C" {
 #include <stdio.h>
 #include <AppKit.h>
 #include <InterfaceKit.h>
-#include <be/game/DirectWindow.h>
+#include <game/DirectWindow.h>
 #if SDL_VIDEO_OPENGL
-#include <be/opengl/GLView.h>
+#include <opengl/GLView.h>
 #endif
 #include "SDL_events.h"
 #include "../../main/haiku/SDL_BApp.h"
diff --git a/src/video/haiku/SDL_bopengl.cc b/src/video/haiku/SDL_bopengl.cc
index 245cec1..52ee67a 100644
--- a/src/video/haiku/SDL_bopengl.cc
+++ b/src/video/haiku/SDL_bopengl.cc
@@ -56,7 +56,7 @@ int BE_GL_LoadLibrary(_THIS, const char *path)
 		if( get_image_symbol(info.id, "glBegin", B_SYMBOL_TYPE_ANY,
 				&location) == B_OK) {
 
-			_this->gl_config.dll_handle = (void *) info.id;
+			_this->gl_config.dll_handle = (void *)(addr_t) info.id;
 			_this->gl_config.driver_loaded = 1;
 			SDL_strlcpy(_this->gl_config.driver_path, "libGL.so",
 					SDL_arraysize(_this->gl_config.driver_path));
@@ -71,7 +71,7 @@ void *BE_GL_GetProcAddress(_THIS, const char *proc)
 		void *location = NULL;
 		status_t err;
 		if ((err =
-			get_image_symbol((image_id) _this->gl_config.dll_handle,
+			get_image_symbol((image_id)(addr_t) _this->gl_config.dll_handle,
                               proc, B_SYMBOL_TYPE_ANY,
                               &location)) == B_OK) {
             return location;
-- 
1.8.3.4


From 344472b0218ba8acbc535c0c456ede1c1008ad67 Mon Sep 17 00:00:00 2001
From: Adrien Destugues <pulkomandy@pulkomandy.tk>
Date: Wed, 3 Sep 2014 19:22:12 +0200
Subject: Fix null pointer dereference.


diff --git a/src/video/haiku/SDL_bopengl.cc b/src/video/haiku/SDL_bopengl.cc
index 52ee67a..2f0073d 100644
--- a/src/video/haiku/SDL_bopengl.cc
+++ b/src/video/haiku/SDL_bopengl.cc
@@ -93,7 +93,8 @@ void BE_GL_SwapWindow(_THIS, SDL_Window * window) {
 }
 
 int BE_GL_MakeCurrent(_THIS, SDL_Window * window, SDL_GLContext context) {
-	_GetBeApp()->SetCurrentContext(((SDL_BWin*)context)->GetGLView());
+	SDL_BWin* win = (SDL_BWin*)context;
+	_GetBeApp()->SetCurrentContext(win ? win->GetGLView() : NULL);
 	return 0;
 }
 
-- 
1.8.3.4


From 4c1fe53d13c6cada30bcb1606308487154003d9a Mon Sep 17 00:00:00 2001
From: Puck Meerburg <puck@puckipedia.nl>
Date: Sat, 17 Jan 2015 19:33:32 +0100
Subject: SDL_BApp: Make sure _current_context isn't NULL before trying to lock
 it


diff --git a/src/main/haiku/SDL_BApp.h b/src/main/haiku/SDL_BApp.h
index 1e4a0f5..a13ea3b 100644
--- a/src/main/haiku/SDL_BApp.h
+++ b/src/main/haiku/SDL_BApp.h
@@ -193,7 +193,8 @@ public:
         if(_current_context)
             _current_context->UnlockGL();
         _current_context = newContext;
-        _current_context->LockGL();
+        if (_current_context)
+	        _current_context->LockGL();
     }
 private:
     /* Event management */
-- 
1.8.3.4

