diff options
Diffstat (limited to 'src/plugins/platforms/xcb/qxcbwindow.cpp')
-rw-r--r-- | src/plugins/platforms/xcb/qxcbwindow.cpp | 15 |
1 files changed, 4 insertions, 11 deletions
diff --git a/src/plugins/platforms/xcb/qxcbwindow.cpp b/src/plugins/platforms/xcb/qxcbwindow.cpp index 0dba120e30..147bac01dd 100644 --- a/src/plugins/platforms/xcb/qxcbwindow.cpp +++ b/src/plugins/platforms/xcb/qxcbwindow.cpp @@ -363,14 +363,9 @@ void QXcbWindow::create() return result; }; + xcb_colormap_t cmap = XCB_COLORMAP_NONE; if ((window()->supportsOpenGL() && haveOpenGL()) || m_format.hasAlpha()) { - m_cmap = xcb_generate_id(xcb_connection()); - xcb_create_colormap(xcb_connection(), - XCB_COLORMAP_ALLOC_NONE, - m_cmap, - xcb_parent_id, - m_visualId); - + cmap = platformScreen->colormapForVisual(m_visualId); mask |= XCB_CW_COLORMAP; } @@ -381,7 +376,7 @@ void QXcbWindow::create() type == Qt::Popup || type == Qt::ToolTip || (window()->flags() & Qt::BypassWindowManagerHint), type == Qt::Popup || type == Qt::Tool || type == Qt::SplashScreen || type == Qt::ToolTip || type == Qt::Drawer, defaultEventMask, - m_cmap + cmap }; m_window = xcb_generate_id(xcb_connection()); @@ -552,9 +547,7 @@ void QXcbWindow::destroy() xcb_destroy_window(xcb_connection(), m_window); m_window = 0; } - if (m_cmap) { - xcb_free_colormap(xcb_connection(), m_cmap); - } + m_mapped = false; if (m_pendingSyncRequest) |