From f58fd1b9277301d1d5a167fc0809558425ce608e Mon Sep 17 00:00:00 2001 From: John Preston Date: Fri, 11 Jun 2021 22:59:11 +0400 Subject: [PATCH] Add OpenGL init crash checker. --- ui/gl/gl_detection.cpp | 5 +++++ ui/integration.cpp | 10 ++++++++++ ui/integration.h | 4 ++++ 3 files changed, 19 insertions(+) diff --git a/ui/gl/gl_detection.cpp b/ui/gl/gl_detection.cpp index 90b1581..3d9871b 100644 --- a/ui/gl/gl_detection.cpp +++ b/ui/gl/gl_detection.cpp @@ -6,6 +6,7 @@ // #include "ui/gl/gl_detection.h" +#include "ui/integration.h" #include "base/debug_log.h" #include @@ -45,7 +46,11 @@ Capabilities CheckCapabilities(QWidget *widget) { } auto tester = QOpenGLWidget(widget); tester.setFormat(format); + + Ui::Integration::Instance().openglCheckStart(); tester.grabFramebuffer(); // Force initialize(). + Ui::Integration::Instance().openglCheckFinish(); + if (!tester.window()->windowHandle()) { tester.window()->createWinId(); } diff --git a/ui/integration.cpp b/ui/integration.cpp index ae25fc0..f7879f0 100644 --- a/ui/integration.cpp +++ b/ui/integration.cpp @@ -30,6 +30,16 @@ bool Integration::Exists() { return (IntegrationInstance != nullptr); } +void Integration::openglCheckStart() { +} + +void Integration::openglCheckFinish() { +} + +bool Integration::openglLastCheckFailed() { + return false; +} + void Integration::textActionsUpdated() { } diff --git a/ui/integration.h b/ui/integration.h index c51f774..955ea72 100644 --- a/ui/integration.h +++ b/ui/integration.h @@ -35,6 +35,10 @@ public: virtual void registerLeaveSubscription(not_null widget) = 0; virtual void unregisterLeaveSubscription(not_null widget) = 0; + virtual void openglCheckStart(); + virtual void openglCheckFinish(); + [[nodiscard]] virtual bool openglLastCheckFailed(); + [[nodiscard]] virtual QString emojiCacheFolder() = 0; virtual void textActionsUpdated();