From c5f45b7078d316953a9b1cd6e19b40a992b9c3ec Mon Sep 17 00:00:00 2001 From: peri4 Date: Fri, 30 Apr 2021 14:13:16 +0300 Subject: [PATCH] graphic openglwidget create only when realy switch to opengl --- CMakeLists.txt | 2 +- libs/graphic/graphic.cpp | 20 +++++++++++--------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8f6125f..de68dad 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,7 +4,7 @@ cmake_policy(SET CMP0072 NEW) # FindOpenGL prefers GLVND by default project(qad) set(qad_MAJOR 2) set(qad_MINOR 2) -set(qad_REVISION 1) +set(qad_REVISION 2) set(qad_SUFFIX ) set(qad_COMPANY SHS) set(qad_DOMAIN org.SHS) diff --git a/libs/graphic/graphic.cpp b/libs/graphic/graphic.cpp index 6b8581e..15fb527 100644 --- a/libs/graphic/graphic.cpp +++ b/libs/graphic/graphic.cpp @@ -105,12 +105,6 @@ Graphic::Graphic(QWidget * parent): QFrame(parent), canvas(0), line_x_min(this), connect(&line_y_max, SIGNAL(valueChanged(double)), this, SLOT(lineYMaxChanged(double))); connect(ui->canvas_raster, SIGNAL(paintEvent(QPaintEvent * )), this, SLOT(canvasPaintEvent())); prepareCanvas(ui->canvas_raster); -#ifdef HAS_GL - canvas_gl = new UGLWidget(); - ui->layoutCanvas->addWidget(canvas_gl); - connect(canvas_gl, SIGNAL(paintSignal()), this, SLOT(canvasPaintEvent())); - prepareCanvas(canvas_gl); -#endif icon_exp_x = QIcon(":/icons/expand_x.png"); icon_exp_y = QIcon(":/icons/expand_y.png"); icon_exp_sx = QIcon(":/icons/expand_s_x.png"); @@ -870,11 +864,18 @@ void Graphic::setOpenGL(bool on) { #ifdef HAS_GL isOGL = on; if (on) { + if (!canvas_gl) { + canvas_gl = new UGLWidget(); + ui->layoutCanvas->addWidget(canvas_gl); + connect(canvas_gl, SIGNAL(paintSignal()), this, SLOT(canvasPaintEvent())); + prepareCanvas(canvas_gl); + } ui->canvas_raster->hide(); canvas_gl->show(); canvas = canvas_gl; } else { - canvas_gl->hide(); + if (canvas_gl) + canvas_gl->hide(); ui->canvas_raster->show(); canvas = ui->canvas_raster; } @@ -1460,7 +1461,8 @@ void Graphic::setCurrentAction(GraphicAction action) { void Graphic::setCanvasCursor(QCursor cursor) { ui->canvas_raster->setCursor(cursor); #ifdef HAS_GL - canvas_gl->setCursor(cursor); + if (canvas_gl) + canvas_gl->setCursor(cursor); #endif } @@ -1476,7 +1478,7 @@ void Graphic::setGuidesCursor() { void Graphic::swapToBuffer() { QImage timg; #ifdef HAS_GL - if (isOGL) { + if (isOGL && canvas_gl) { timg = canvas_gl->grabFrameBuffer(); QPainter p(buffer); p.drawImage(0, 0, timg);