Merge remote-tracking branch 'glBitmap.delphigl.com/unstable'
[LazOpenGLCore.git] / uglcContextGtk2GLX.pas
index bbde99f..f9d1475 100644 (file)
@@ -60,10 +60,7 @@ type
 \r
 {$region messages -fold}\r
 procedure TRenderControl.WndProc(var Message: TLMessage);\r
-var\r
-  handled: Boolean;\r
 begin\r
-  handled := false;\r
   case Message.msg of\r
     //LM_ACTIVATEITEM,\r
     //LM_CHANGED,\r
@@ -269,10 +266,8 @@ begin
     CN_SYSCHAR,\r
     CN_NOTIFY:\r
     begin\r
-      if Assigned(fTarget) then begin\r
+      if Assigned(fTarget) then\r
         Message.Result := fTarget.Perform(Message.msg, Message.wParam, Message.lParam);\r
-        handled := true;\r
-      end;\r
     end;\r
   end;\r
   inherited WndProc(Message);\r
@@ -356,6 +351,9 @@ var
   attrList: TGLIntArray;\r
   drawable: PGdkDrawable;\r
 begin\r
+  if not Assigned(aControl) then\r
+    raise EArgumentException.Create('aControl is not assigned');\r
+\r
   {\r
     Temporary (realized) widget to get to display\r
   }\r
@@ -387,6 +385,8 @@ begin
       FVisual  := glXChooseVisual(FDisplay, DefaultScreen(FDisplay), @attrList[0]);\r
     end;\r
   end;\r
+  if not Assigned(FVisual) then\r
+    raise EGLXError.Create('choose visual failed');\r
 \r
   {\r
     Most widgets inherit the drawable of their parent. In contrast to Windows, descending from\r
@@ -422,6 +422,7 @@ procedure TglcContextGtk2GLX.OpenContext;
 var\r
   Attribs: array of GLint;\r
   tmpContext: GLXContext;\r
+  glxID: GLXDrawable;\r
 begin\r
   inherited OpenContext;\r
 \r
@@ -453,7 +454,8 @@ begin
     SetLength(Attribs, 1);\r
     Attribs[High(Attribs)] := 0;\r
 \r
-    glXMakeCurrent(FDisplay, GDK_DRAWABLE_XID(GTK_WIDGET(FWidget)^.window), tmpContext);\r
+    glxID := GDK_DRAWABLE_XID(GTK_WIDGET(FWidget)^.window);\r
+    glXMakeCurrent(FDisplay, glxID, tmpContext);\r
     ReadImplementationProperties;\r
     if not Assigned(glXCreateContextAttribsARB) or not GLX_ARB_create_context then begin\r
       glXDestroyContext(FDisplay, tmpContext);\r
@@ -500,6 +502,8 @@ begin
 end;\r
 \r
 procedure TglcContextGtk2GLX.Activate;\r
+var\r
+   glxID: GLXDrawable;\r
 begin\r
   if not Assigned(FWidget) then exit;\r
   // make sure the widget is realized\r
@@ -507,30 +511,36 @@ begin
   if not GTK_WIDGET_REALIZED(FWidget) then exit;\r
 \r
   // make current\r
-\r
-  glXMakeCurrent(FDisplay, GDK_DRAWABLE_XID(GTK_WIDGET(FWidget)^.window), FContext);\r
+  glxID := GDK_DRAWABLE_XID(GTK_WIDGET(FWidget)^.window);\r
+  glXMakeCurrent(FDisplay, glxID, FContext);\r
 end;\r
 \r
 procedure TglcContextGtk2GLX.Deactivate;\r
+var\r
+   glxID: GLXDrawable;\r
 begin\r
   if not Assigned(FWidget) then exit;\r
-  glXMakeCurrent(FDisplay, GDK_DRAWABLE_XID(GTK_WIDGET(FWidget)^.window), nil);\r
+  glxID := GDK_DRAWABLE_XID(GTK_WIDGET(FWidget)^.window);\r
+  glXMakeCurrent(FDisplay, glxID, nil);\r
 end;\r
 \r
 function TglcContextGtk2GLX.IsActive: boolean;\r
+var\r
+  glxID: GLXDrawable;\r
 begin\r
+  glxID := GDK_DRAWABLE_XID(GTK_WIDGET(FWidget)^.window);\r
   Result:= (FContext = glXGetCurrentContext()) and\r
            Assigned(FWidget) and\r
-           (GDK_DRAWABLE_XID(GTK_WIDGET(FWidget)^.window) = glXGetCurrentDrawable());\r
+           (glxID = glXGetCurrentDrawable());\r
 end;\r
 \r
 procedure TglcContextGtk2GLX.SwapBuffers;\r
 var\r
-  drawable: PGdkDrawable;\r
+  glxID: GLXDrawable;\r
 begin\r
   if not Assigned(FWidget) then exit;\r
-  drawable:= GTK_WIDGET(FWidget)^.window;\r
-  glXSwapBuffers(FDisplay, GDK_DRAWABLE_XID(drawable));\r
+  glxID := GDK_DRAWABLE_XID(GTK_WIDGET(FWidget)^.window);\r
+  glXSwapBuffers(FDisplay, glxID);\r
 end;\r
 \r
 procedure TglcContextGtk2GLX.SetSwapInterval(const aInterval: GLint);\r
@@ -547,7 +557,7 @@ begin
   raise Exception.Create('not yet implemented');\r
 end;\r
 \r
-class function TglcContextGtk2GLX.ChangeDisplaySettings(const aWidth, aHeight,\r
+class function TglcContextGtk2GLX.{%H-}ChangeDisplaySettings(const aWidth, aHeight,\r
   aBitPerPixel, aFreq: Integer; const aFlags: TglcDisplayFlags): Boolean;\r
 begin\r
   raise Exception.Create('not yet implemented');\r
@@ -559,4 +569,4 @@ begin
 end;\r
 \r
 end.\r
-\r
\ No newline at end of file
+\r