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

View File

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

View File

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