diff options
author | Jesse Barnes <jbarnes@virtuousgeek.org> | 2010-06-11 00:17:10 -0700 |
---|---|---|
committer | Jesse Barnes <jbarnes@virtuousgeek.org> | 2010-06-11 00:17:10 -0700 |
commit | 30c92210f82323ae9ef03ee01035b1ed00ccca84 (patch) | |
tree | 94f1af268fccb6d56658d2d3199826eeeb5a636b | |
parent | a261c9e5a17b502e3ef03d6cfee7bc65b973ed18 (diff) |
Startup fixes for Wayland
- check for right GL API
- initialize event dispatcher
- add error checking
-rw-r--r-- | src/gui/kernel/qapplication_wayland.cpp | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/src/gui/kernel/qapplication_wayland.cpp b/src/gui/kernel/qapplication_wayland.cpp index 32f8bb6a52..517e87a1a1 100644 --- a/src/gui/kernel/qapplication_wayland.cpp +++ b/src/gui/kernel/qapplication_wayland.cpp @@ -104,16 +104,14 @@ Q_GUI_EXPORT QWaylandData *qWayland = 0; void QApplicationPrivate::createEventDispatcher() { -#if 0 Q_Q(QApplication); if (!QEventDispatcherGlib::versionSupported()) qFatal("glib version not supported\n"); eventDispatcher = (q->type() != QApplication::Tty - ? new QEventDispatcherWayland(q) : - new QEventDispatcherGlib(q)) -#endif + ? new QWaylandEventDispatcherGlib(q) + : new QEventDispatcherGlib(q)); } void QApplicationPrivate::initializeWidgetPaletteHash() @@ -205,8 +203,12 @@ void qt_init(QApplicationPrivate *priv, int type) static const EGLint config_attribs[] = { EGL_SURFACE_TYPE, 0, - EGL_NO_SURFACE_CAPABLE_MESA, EGL_OPENGL_ES_BIT, - EGL_RENDERABLE_TYPE, EGL_OPENGL_ES_BIT, + EGL_NO_SURFACE_CAPABLE_MESA, EGL_OPENGL_ES2_BIT, + EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT, + EGL_NONE + }; + static const EGLint context_attribs[] = { + EGL_CONTEXT_CLIENT_VERSION, 2, EGL_NONE }; @@ -229,6 +231,11 @@ void qt_init(QApplicationPrivate *priv, int type) } dpy = get_typed_display_mesa(EGL_DRM_DISPLAY_TYPE_MESA, (void *) fd); + if (!dpy) { + close(fd); + qFatal("failed to get DRM display\n"); + } + if (!eglInitialize(dpy, &major, &minor)) { close(fd); qFatal("failed to initialize EGL\n"); @@ -242,7 +249,7 @@ void qt_init(QApplicationPrivate *priv, int type) eglBindAPI(EGL_OPENGL_ES_API); - ctx = eglCreateContext(dpy, config, EGL_NO_CONTEXT, NULL); + ctx = eglCreateContext(dpy, config, EGL_NO_CONTEXT, context_attribs); if (ctx == NULL) { close(fd); qFatal("failed to create EGL context\n"); @@ -285,6 +292,9 @@ void qt_init(QApplicationPrivate *priv, int type) QApplicationPrivate::graphics_system = QGraphicsSystemFactory::create("opengl"); + if (!QApplicationPrivate::graphics_system) + qFatal("failed to init opengl graphics system\n"); + QColormap::initialize(); QFont::initialize(); QCursorData::initialize(); |