\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
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
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
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
var\r
Attribs: array of GLint;\r
tmpContext: GLXContext;\r
+ glxID: GLXDrawable;\r
begin\r
inherited OpenContext;\r
\r
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
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
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
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
end;\r
\r
end.\r
-\r
\ No newline at end of file
+\r