]> git.sesse.net Git - nageru/blob - context.cpp
Let settings follow buses when editing the mapping.
[nageru] / context.cpp
1 #include <stdio.h>
2
3 #include <QGL>
4 #include <QOffscreenSurface>
5 #include <QOpenGLContext>
6 #include <QSurfaceFormat>
7
8 class QSurface;
9
10 QGLWidget *global_share_widget = nullptr;
11
12 QSurface *create_surface(const QSurfaceFormat &format)
13 {
14         QOffscreenSurface *surface = new QOffscreenSurface;
15         surface->setFormat(format);
16 //      QWindow *surface = new QWindow;
17         surface->create();
18         if (!surface->isValid()) {
19                 printf("ERROR: surface not valid!\n");
20 //              abort();
21         }
22         return surface;
23 }
24
25 QSurface *create_surface_with_same_format(const QSurface *surface)
26 {
27         return create_surface(surface->format());
28 }
29
30 QOpenGLContext *create_context(const QSurface *surface)
31 {
32         QOpenGLContext *context = new QOpenGLContext;
33         context->setShareContext(global_share_widget->context()->contextHandle());
34         context->setFormat(surface->format());
35         context->create();
36         return context;
37 }
38
39 bool make_current(QOpenGLContext *context, QSurface *surface)
40 {
41         return context->makeCurrent(surface);
42 }
43
44 void delete_context(QOpenGLContext *context)
45 {
46         delete context;
47 }