39 enum RenderLoopFlags {
40 SupportsGrabWithoutExpose = 0x01
43 virtual ~QSGRenderLoop();
45 virtual void show(QQuickWindow *window) = 0;
46 virtual void hide(QQuickWindow *window) = 0;
47 virtual void resize(QQuickWindow *) {};
49 virtual void windowDestroyed(QQuickWindow *window) = 0;
51 virtual void exposureChanged(QQuickWindow *window) = 0;
52 virtual QImage grab(QQuickWindow *window) = 0;
54 virtual void update(QQuickWindow *window) = 0;
55 virtual void maybeUpdate(QQuickWindow *window) = 0;
56 virtual void handleUpdateRequest(QQuickWindow *) { }
58 virtual QAnimationDriver *animationDriver()
const = 0;
60 virtual QSGContext *sceneGraphContext()
const = 0;
61 virtual QSGRenderContext *createRenderContext(QSGContext *)
const = 0;
63 virtual void releaseResources(QQuickWindow *window) = 0;
64 virtual void postJob(QQuickWindow *window, QRunnable *job);
66 void addWindow(QQuickWindow *win) { m_windows.insert(win); }
67 void removeWindow(QQuickWindow *win) { m_windows.remove(win); }
68 QSet<QQuickWindow *> windows()
const {
return m_windows; }
70 virtual QSurface::SurfaceType windowSurfaceType()
const;
73 static QSGRenderLoop *instance();
74 static void setInstance(QSGRenderLoop *instance);
76 virtual bool interleaveIncubation()
const {
return false; }
78 virtual int flags()
const {
return 0; }
80 static void cleanup();
82 void handleContextCreationFailure(QQuickWindow *window);
85 void timeToIncubate();
88 static QSGRenderLoop *s_instance;
90 QSet<QQuickWindow *> m_windows;
bool qsg_useConsistentTiming()