haiku: Fix build through scons corrections and viewport fixes
authorAlexander von Gluck IV <kallisti5@unixzen.com>
Wed, 19 Mar 2014 00:58:01 +0000 (00:58 +0000)
committerAlexander von Gluck IV <kallisti5@unixzen.com>
Tue, 25 Mar 2014 00:01:53 +0000 (19:01 -0500)
* Add HAVE_PTHREAD, we do have pthread support wrappers now for
  non-native Haiku threaded applications.
* Viewport changed behavior recently breaking the build.
  We fix this by looking at the gl_context ViewportArray
  (Thanks Brian for the idea)

Acked-by: Brian Paul <brianp@vmware.com>
scons/gallium.py
src/gallium/targets/haiku-softpipe/GalliumContext.cpp

index f505a62be566aaa1b7a7c31946d09e1cb0311491..e11d4dba312e9a5f9e1aa82b773de9ceabf13d19 100755 (executable)
@@ -269,6 +269,11 @@ def generate(env):
             cppdefines += ['HAVE_ALIAS']
         else:
             cppdefines += ['GLX_ALIAS_UNSUPPORTED']
+    if env['platform'] == 'haiku':
+        cppdefines += [
+            'HAVE_PTHREAD',
+            'HAVE_POSIX_MEMALIGN'
+        ]
     if platform == 'windows':
         cppdefines += [
             'WIN32',
index 1078cb7b38031185e3cdbeb90ffd501c8b3e269a..52cd764847402de831f4d759a33a87a0c667b933 100644 (file)
@@ -44,9 +44,15 @@ extern "C" {
 
 
 static void
-hgl_viewport(struct gl_context* glContext, GLint x, GLint y,
-       GLsizei width, GLsizei height)
+hgl_viewport(struct gl_context* glContext)
 {
+       // TODO: We should try to eliminate this function
+
+       GLint x = glContext->ViewportArray[0].X;
+       GLint y = glContext->ViewportArray[0].Y;
+       GLint width = glContext->ViewportArray[0].Width;
+       GLint height = glContext->ViewportArray[0].Height;
+
        TRACE("%s(glContext: %p, x: %d, y: %d, w: %d, h: %d\n", __func__,
                glContext, x, y, width, height);
 
@@ -525,7 +531,7 @@ GalliumContext::ResizeViewport(int32 width, int32 height)
        for (context_id i = 0; i < CONTEXT_MAX; i++) {
                if (fContext[i] && fContext[i]->st) {
                        struct st_context *stContext = (struct st_context*)fContext[i]->st;
-                       _mesa_set_viewport(stContext->ctx, 0, 0, width, height);
+                       _mesa_set_viewport(stContext->ctx, 0, 0, 0, width, height);
                        st_manager_validate_framebuffers(stContext);
                }
        }