mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 744112 - Qt QGL context conflict with WebGL context current states. r=dougt
This commit is contained in:
parent
d485f6d4b3
commit
ef8fed916e
@ -41,6 +41,7 @@
|
||||
#include <QApplication>
|
||||
#include <QGraphicsWidget>
|
||||
#include <QGraphicsView>
|
||||
#include <QtOpenGL/QGLWidget>
|
||||
|
||||
#include "nsCOMPtr.h"
|
||||
|
||||
@ -149,6 +150,7 @@ public:
|
||||
: QGraphicsView (new QGraphicsScene(), aParent)
|
||||
, mEventHandler(this)
|
||||
, mTopLevelWidget(NULL)
|
||||
, mGLWidget(0)
|
||||
{
|
||||
setMouseTracking(true);
|
||||
setFrameShape(QFrame::NoFrame);
|
||||
@ -160,6 +162,18 @@ public:
|
||||
mTopLevelWidget = aTopLevel;
|
||||
}
|
||||
|
||||
void setGLWidgetEnabled(bool aEnabled)
|
||||
{
|
||||
if (aEnabled) {
|
||||
mGLWidget = new QGLWidget();
|
||||
setViewport(mGLWidget);
|
||||
} else {
|
||||
delete mGLWidget;
|
||||
mGLWidget = 0;
|
||||
setViewport(new QWidget());
|
||||
}
|
||||
}
|
||||
|
||||
protected:
|
||||
|
||||
virtual bool event(QEvent* aEvent)
|
||||
@ -180,9 +194,18 @@ protected:
|
||||
QGraphicsView::closeEvent(aEvent);
|
||||
}
|
||||
|
||||
virtual void paintEvent(QPaintEvent* aEvent)
|
||||
{
|
||||
if (mGLWidget) {
|
||||
mGLWidget->makeCurrent();
|
||||
}
|
||||
QGraphicsView::paintEvent(aEvent);
|
||||
}
|
||||
|
||||
private:
|
||||
MozQGraphicsViewEvents mEventHandler;
|
||||
IMozQWidget* mTopLevelWidget;
|
||||
QGLWidget* mGLWidget;
|
||||
};
|
||||
|
||||
#ifdef MOZ_ENABLE_MEEGOTOUCH
|
||||
|
@ -2715,11 +2715,14 @@ nsWindow::createQWidget(MozQWidget *parent,
|
||||
newView->setWindowModality(Qt::WindowModal);
|
||||
}
|
||||
|
||||
#ifdef MOZ_PLATFORM_MAEMO
|
||||
#if defined(MOZ_PLATFORM_MAEMO) || defined(MOZ_GL_PROVIDER)
|
||||
if (GetShouldAccelerate()) {
|
||||
// Only create new OGL widget if it is not yet installed
|
||||
if (!HasGLContext()) {
|
||||
newView->setViewport(new QGLWidget());
|
||||
MozQGraphicsView *qview = qobject_cast<MozQGraphicsView*>(newView);
|
||||
if (qview) {
|
||||
qview->setGLWidgetEnabled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user