From 84314472da091eaed56eef4353ffb35eecab2d15 Mon Sep 17 00:00:00 2001
From: Andreas Kloeckner <inform@tiker.net>
Date: Sat, 19 Jun 2010 14:10:49 -0400
Subject: [PATCH] Fix OpenGL interop code. (patch by Paolo Simone Gasparello)

---
 src/wrapper/wrap_cl.cpp |  4 ++--
 src/wrapper/wrap_cl.hpp | 20 ++++++++++++--------
 2 files changed, 14 insertions(+), 10 deletions(-)

diff --git a/src/wrapper/wrap_cl.cpp b/src/wrapper/wrap_cl.cpp
index 417a383e..03e3aad0 100644
--- a/src/wrapper/wrap_cl.cpp
+++ b/src/wrapper/wrap_cl.cpp
@@ -875,7 +875,7 @@ BOOST_PYTHON_MODULE(_cl)
         "GLBuffer", py::no_init)
       .def("__init__", make_constructor(create_from_gl_buffer,
             py::default_call_policies(),
-            (py::args("context", "flags" "bufobj"))))
+            (py::args("context", "flags", "bufobj"))))
       .def("get_gl_object_info", get_gl_object_info)
       ;
   }
@@ -886,7 +886,7 @@ BOOST_PYTHON_MODULE(_cl)
         "GLRenderBuffer", py::no_init)
       .def("__init__", make_constructor(create_from_gl_renderbuffer,
             py::default_call_policies(),
-            (py::args("context", "flags" "bufobj"))))
+            (py::args("context", "flags", "bufobj"))))
       .def("get_gl_object_info", get_gl_object_info)
       ;
   }
diff --git a/src/wrapper/wrap_cl.hpp b/src/wrapper/wrap_cl.hpp
index 3fbcfd96..8113fe96 100644
--- a/src/wrapper/wrap_cl.hpp
+++ b/src/wrapper/wrap_cl.hpp
@@ -679,20 +679,24 @@ namespace pyopencl
             py::extract<cl_context_properties>(prop_tuple[0]);
         props.push_back(prop);
 
-        if (prop == CL_CONTEXT_PLATFORM
+        if (prop == CL_CONTEXT_PLATFORM)
+        {
+          py::extract<const platform &> value(prop_tuple[1]);
+          props.push_back(
+              reinterpret_cast<cl_context_properties>(value().data()));
+        }
 #if defined(cl_khr_gl_sharing) && (cl_khr_gl_sharing >= 1)
-            || prop == CL_GL_CONTEXT_KHR
+       else if (prop == CL_GL_CONTEXT_KHR
             || prop == CL_EGL_DISPLAY_KHR
             || prop == CL_GLX_DISPLAY_KHR
             || prop == CL_WGL_HDC_KHR
             || prop == CL_CGL_SHAREGROUP_KHR
+           )
+       {
+          py::extract<cl_context_properties> value(prop_tuple[1]);
+          props.push_back(value);
+       }
 #endif
-            )
-        {
-          py::extract<const platform &> value(prop_tuple[1]);
-          props.push_back(
-              reinterpret_cast<cl_context_properties>(value().data()));
-        }
         else
           throw error("Context", CL_INVALID_VALUE, "invalid context property");
       }
-- 
GitLab