| @@ -60,10 +60,7 @@ type | |||
| {$region messages -fold} | |||
| procedure TRenderControl.WndProc(var Message: TLMessage); | |||
| var | |||
| handled: Boolean; | |||
| begin | |||
| handled := false; | |||
| case Message.msg of | |||
| //LM_ACTIVATEITEM, | |||
| //LM_CHANGED, | |||
| @@ -269,10 +266,8 @@ begin | |||
| CN_SYSCHAR, | |||
| CN_NOTIFY: | |||
| begin | |||
| if Assigned(fTarget) then begin | |||
| if Assigned(fTarget) then | |||
| Message.Result := fTarget.Perform(Message.msg, Message.wParam, Message.lParam); | |||
| handled := true; | |||
| end; | |||
| end; | |||
| end; | |||
| inherited WndProc(Message); | |||
| @@ -422,6 +417,7 @@ procedure TglcContextGtk2GLX.OpenContext; | |||
| var | |||
| Attribs: array of GLint; | |||
| tmpContext: GLXContext; | |||
| glxID: GLXDrawable; | |||
| begin | |||
| inherited OpenContext; | |||
| @@ -453,7 +449,8 @@ begin | |||
| SetLength(Attribs, 1); | |||
| Attribs[High(Attribs)] := 0; | |||
| glXMakeCurrent(FDisplay, GDK_DRAWABLE_XID(GTK_WIDGET(FWidget)^.window), tmpContext); | |||
| glxID := GDK_DRAWABLE_XID(GTK_WIDGET(FWidget)^.window); | |||
| glXMakeCurrent(FDisplay, glxID, tmpContext); | |||
| ReadImplementationProperties; | |||
| if not Assigned(glXCreateContextAttribsARB) or not GLX_ARB_create_context then begin | |||
| glXDestroyContext(FDisplay, tmpContext); | |||
| @@ -500,6 +497,8 @@ begin | |||
| end; | |||
| procedure TglcContextGtk2GLX.Activate; | |||
| var | |||
| glxID: GLXDrawable; | |||
| begin | |||
| if not Assigned(FWidget) then exit; | |||
| // make sure the widget is realized | |||
| @@ -507,30 +506,36 @@ begin | |||
| if not GTK_WIDGET_REALIZED(FWidget) then exit; | |||
| // make current | |||
| glXMakeCurrent(FDisplay, GDK_DRAWABLE_XID(GTK_WIDGET(FWidget)^.window), FContext); | |||
| glxID := GDK_DRAWABLE_XID(GTK_WIDGET(FWidget)^.window); | |||
| glXMakeCurrent(FDisplay, glxID, FContext); | |||
| end; | |||
| procedure TglcContextGtk2GLX.Deactivate; | |||
| var | |||
| glxID: GLXDrawable; | |||
| begin | |||
| if not Assigned(FWidget) then exit; | |||
| glXMakeCurrent(FDisplay, GDK_DRAWABLE_XID(GTK_WIDGET(FWidget)^.window), nil); | |||
| glxID := GDK_DRAWABLE_XID(GTK_WIDGET(FWidget)^.window); | |||
| glXMakeCurrent(FDisplay, glxID, nil); | |||
| end; | |||
| function TglcContextGtk2GLX.IsActive: boolean; | |||
| var | |||
| glxID: GLXDrawable; | |||
| begin | |||
| glxID := GDK_DRAWABLE_XID(GTK_WIDGET(FWidget)^.window); | |||
| Result:= (FContext = glXGetCurrentContext()) and | |||
| Assigned(FWidget) and | |||
| (GDK_DRAWABLE_XID(GTK_WIDGET(FWidget)^.window) = glXGetCurrentDrawable()); | |||
| (glxID = glXGetCurrentDrawable()); | |||
| end; | |||
| procedure TglcContextGtk2GLX.SwapBuffers; | |||
| var | |||
| drawable: PGdkDrawable; | |||
| glxID: GLXDrawable; | |||
| begin | |||
| if not Assigned(FWidget) then exit; | |||
| drawable:= GTK_WIDGET(FWidget)^.window; | |||
| glXSwapBuffers(FDisplay, GDK_DRAWABLE_XID(drawable)); | |||
| glxID := GDK_DRAWABLE_XID(GTK_WIDGET(FWidget)^.window); | |||
| glXSwapBuffers(FDisplay, glxID); | |||
| end; | |||
| procedure TglcContextGtk2GLX.SetSwapInterval(const aInterval: GLint); | |||
| @@ -547,7 +552,7 @@ begin | |||
| raise Exception.Create('not yet implemented'); | |||
| end; | |||
| class function TglcContextGtk2GLX.ChangeDisplaySettings(const aWidth, aHeight, | |||
| class function TglcContextGtk2GLX.{%H-}ChangeDisplaySettings(const aWidth, aHeight, | |||
| aBitPerPixel, aFreq: Integer; const aFlags: TglcDisplayFlags): Boolean; | |||
| begin | |||
| raise Exception.Create('not yet implemented'); | |||
| @@ -559,4 +564,4 @@ begin | |||
| end; | |||
| end. | |||