diff options
author | Laszlo Agocs <laszlo.p.agocs@nokia.com> | 2012-02-10 16:28:19 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-02-10 19:40:19 +0100 |
commit | a4fbae9fd9ad41bea52d328d559cd7f7c10af84b (patch) | |
tree | 22aa6c75d541f7f6ae60667bffdf2b7a63550fcf /src | |
parent | 1e744d252370c258590ee4b28ceefa3a5db5b720 (diff) |
Fix xcb's native resource getters.
Returning pointers to unexpected types for unknown keys is quite
wrong. The clients expect 0 in such a case but what they got (until
now) was whatever was associated with the default constructed enum
value.
Change-Id: Iefd7bf461bfb2c1f4c73f5f9f291aecad60219eb
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
Reviewed-by: Jani Uusi-Rantala <jani.uusi-rantala@nokia.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/platforms/xcb/qxcbnativeinterface.cpp | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/plugins/platforms/xcb/qxcbnativeinterface.cpp b/src/plugins/platforms/xcb/qxcbnativeinterface.cpp index b7403cfdce..406f9c24bd 100644 --- a/src/plugins/platforms/xcb/qxcbnativeinterface.cpp +++ b/src/plugins/platforms/xcb/qxcbnativeinterface.cpp @@ -84,6 +84,9 @@ QXcbNativeInterface::QXcbNativeInterface() void *QXcbNativeInterface::nativeResourceForContext(const QByteArray &resourceString, QOpenGLContext *context) { QByteArray lowerCaseResource = resourceString.toLower(); + if (!qXcbResourceMap()->contains(lowerCaseResource)) + return 0; + ResourceType resource = qXcbResourceMap()->value(lowerCaseResource); void *result = 0; switch(resource) { @@ -91,14 +94,18 @@ void *QXcbNativeInterface::nativeResourceForContext(const QByteArray &resourceSt result = eglContextForContext(context); break; default: - result = 0; + break; } + return result; } void *QXcbNativeInterface::nativeResourceForWindow(const QByteArray &resourceString, QWindow *window) { QByteArray lowerCaseResource = resourceString.toLower(); + if (!qXcbResourceMap()->contains(lowerCaseResource)) + return 0; + ResourceType resource = qXcbResourceMap()->value(lowerCaseResource); void *result = 0; switch(resource) { @@ -118,8 +125,9 @@ void *QXcbNativeInterface::nativeResourceForWindow(const QByteArray &resourceStr result = graphicsDeviceForWindow(window); break; default: - result = 0; + break; } + return result; } |