Qt6: fixed building for Qt6

This commit is contained in:
Željan Rikalo 2022-11-19 21:21:09 +01:00
parent 364a94d82b
commit eec91b3a05
3 changed files with 26 additions and 12 deletions

View File

@ -28,6 +28,7 @@ uses
// Bindings
{$IFDEF LCLQt}qt4,{$ENDIF}
{$IFDEF LCLQt5}qt5, qlclopenglwidget,{$ENDIF}
{$IFDEF LCLQt6}qt6, qlclopenglwidget,{$ENDIF}
qtwidgets, qtobjects, qtproc, qtint,
QtWSControls;
@ -119,10 +120,10 @@ end;
type
{ TQtGLWidget }
TQtGLWidget = class({$IFDEF LCLQt5}TQtOpenGLWidget{$ELSE}TQtWidget{$ENDIF})
TQtGLWidget = class({$IF DEFINED(LCLQt5) OR DEFINED(LCLQt6)}TQtOpenGLWidget{$ELSE}TQtWidget{$ENDIF})
protected
function PaintGLControl(Sender: QObjectH; Event: QEventH): boolean; cdecl;
{$IFDEF LCLQt5}
{$IF DEFINED(LCLQt5) OR DEFINED(LCLQt6)}
procedure paintGL(); cdecl; override;
{$ENDIF}
public
@ -186,7 +187,7 @@ begin
end;
end;
{$IFDEF LCLQt5}
{$IF DEFINED(LCLQt5) OR DEFINED(LCLQt6)}
procedure TQtGLWidget.paintGL(); cdecl;
var
AEvent: QPaintEventH;
@ -309,7 +310,7 @@ var
AttrList: TContextAttribs;
NewQtWidget: TQtGLWidget;
direct: boolean;
{$IFDEF LCLQt5}
{$IF DEFINED(LCLQt5) OR DEFINED(LCLQt6)}
AWinFormat: QSurfaceFormatH;
{$ENDIF}
{$IFDEF VerboseMultiSampling}
@ -327,11 +328,15 @@ begin
NewQtWidget.setAttribute(QtWA_OpaquePaintEvent);
{$endif}
NewQtWidget.HasPaint := false;
{$IFDEF LCLQt6}
NewQtWidget.xdisplay := QtWidgetSet.x11Display;
{$ELSE}
NewQtWidget.xdisplay := QX11Info_display;
{$ENDIF}
NewQtWidget.visual := glXChooseVisual(NewQtWidget.xdisplay,
DefaultScreen(NewQtWidget.xdisplay), @attrList.AttributeList[0]);
direct := false;
{$IFDEF LCLQt5}
{$IF DEFINED(LCLQt5) OR DEFINED(LCLQt6)}
QWindow_setSurfaceType(QWidget_windowHandle(NewQtWidget.Widget), QSurfaceSurfaceTypeOpenGLSurface);
AWinFormat := QSurfaceFormat_Create();
@ -564,8 +569,12 @@ begin
{$IFDEF VerboseMultiSampling}
debugln(['CreateOpenGLContextAttrList MultiSampling=',MultiSampling]);
{$ENDIF}
{$IFDEF ModernGL}
{$IFDEF ModernGL}
{$IFDEF LCLQt6}
UseFBConfig := GLX_version_1_3(QtWidgetSet.x11Display());
{$ELSE}
UseFBConfig := GLX_version_1_3(QX11Info_display());
{$ENDIF}
{$ELSE}
UseFBConfig := false;
{$ENDIF}

View File

@ -78,7 +78,7 @@ unit OpenGLContext;
{$DEFINE HasRGBBits}
{$DEFINE OpenGLTargetDefined}
{$ENDIF}
{$IFDEF LCLQT5}
{$IF DEFINED(LCLQT5) OR DEFINED(LCLQt6)}
{$DEFINE UseQTGLX}
{$DEFINE UsesModernGL}
{$DEFINE HasRGBA}

View File

@ -14,16 +14,21 @@ unit qlclopenglwidget;
interface
uses
qt5, qtobjects, qtwidgets,
{$IFDEF LCLQt5}qt5,{$ENDIF}
{$IFDEF LCLQt6}qt6,{$ENDIF}
qtobjects, qtwidgets,
Classes, SysUtils, Types, Controls, LCLType;
type
QLCLOpenGLWidget_gl_Override = procedure of object cdecl;
function QLCLOpenGLWidget_Create(parent: QWidgetH = nil; f: QtWindowFlags = 0): QWidgetH; cdecl; external Qt5PasLib name 'QLCLOpenGLWidget_Create';
procedure QLCLOpenGLWidget_Destroy(handle: QWidgetH); cdecl; external Qt5PasLib name 'QLCLOpenGLWidget_Destroy';
procedure QLCLOpenGLWidget_override_paintGL(handle: QLCLOpenGLWidgetH; hook: QLCLOpenGLWidget_gl_Override); cdecl; external Qt5PasLib name 'QLCLOpenGLWidget_override_paintGL';
procedure QLCLOpenGLWidget_InheritedPaintGL(handle: QLCLOpenGLWidgetH); cdecl; external Qt5PasLib name 'QLCLOpenGLWidget_InheritedPaintGL';
const
QtPasLibrary = {$IFDEF LCLQt5}Qt5PasLib;{$ENDIF}{$IFDEF LCLQt6}Qt6PasLib;{$ENDIF}
function QLCLOpenGLWidget_Create(parent: QWidgetH = nil; f: QtWindowFlags = 0): QWidgetH; cdecl; external QtPasLibrary name 'QLCLOpenGLWidget_Create';
procedure QLCLOpenGLWidget_Destroy(handle: QWidgetH); cdecl; external QtPasLibrary name 'QLCLOpenGLWidget_Destroy';
procedure QLCLOpenGLWidget_override_paintGL(handle: QLCLOpenGLWidgetH; hook: QLCLOpenGLWidget_gl_Override); cdecl; external QtPasLibrary name 'QLCLOpenGLWidget_override_paintGL';
procedure QLCLOpenGLWidget_InheritedPaintGL(handle: QLCLOpenGLWidgetH); cdecl; external QtPasLibrary name 'QLCLOpenGLWidget_InheritedPaintGL';
type