Issue #46: Program does not launch/freezes on Windows 10/Windows Server 2022 (x64)

This commit is contained in:
Jakub Melka
2023-04-22 13:17:42 +02:00
parent 66c6e23346
commit 6224f226b2
8 changed files with 148 additions and 6 deletions

View File

@ -44,7 +44,7 @@ PDFWidget::PDFWidget(const PDFCMSManager* cmsManager, RendererEngine engine, int
m_verticalScrollBar(nullptr),
m_proxy(nullptr)
{
m_drawWidget = createDrawWidget(engine, samplesCount);
m_drawWidget = createDrawWidget(getEffectiveRenderer(engine), samplesCount);
m_horizontalScrollBar = new QScrollBar(Qt::Horizontal, this);
m_verticalScrollBar = new QScrollBar(Qt::Vertical, this);
@ -90,6 +90,8 @@ void PDFWidget::setDocument(const PDFModifiedDocument& document)
void PDFWidget::updateRenderer(RendererEngine engine, int samplesCount)
{
engine = getEffectiveRenderer(engine);
PDFOpenGLDrawWidget* openglDrawWidget = qobject_cast<PDFOpenGLDrawWidget*>(m_drawWidget->getWidget());
PDFDrawWidget* softwareDrawWidget = qobject_cast<PDFDrawWidget*>(m_drawWidget->getWidget());
@ -207,6 +209,16 @@ void PDFWidget::addInputInterface(IDrawWidgetInputInterface* inputInterface)
}
}
RendererEngine PDFWidget::getEffectiveRenderer(RendererEngine rendererEngine)
{
if (rendererEngine == RendererEngine::OpenGL && !pdf::PDFRendererInfo::isHardwareAccelerationSupported())
{
return RendererEngine::Software;
}
return rendererEngine;
}
PDFFormManager* PDFWidget::getFormManager() const
{
return m_formManager;
@ -591,8 +603,11 @@ void PDFOpenGLDrawWidget::initializeGL()
void PDFOpenGLDrawWidget::paintGL()
{
QPainter painter(this);
getPDFWidget()->getDrawWidgetProxy()->draw(&painter, this->rect());
if (this->isValid())
{
QPainter painter(this);
getPDFWidget()->getDrawWidgetProxy()->draw(&painter, this->rect());
}
}
PDFDrawWidget::PDFDrawWidget(PDFWidget* widget, QWidget* parent) :