summaryrefslogtreecommitdiffstats
path: root/src/gui/kernel
Commit message (Collapse)AuthorAgeFilesLines
...
* | QPlatformMenu: add MenuType enumRichard Moe Gustavsen2014-08-051-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | On mobile platforms several different popup menu types exist. E.g on iOS, you have a special popup just for selecting text. This patch will add a new enum that lets UI controls select/hint which one to use for a particular QPlatformMenu. It's likely that the enum needs to be extended later (DropdownMenu, PopoverMenu etc), but being able to specify the edit menu at least will do for now. Change-Id: I2aefa5eedb9429921560ac2b778a88721f153459 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
* | Improve qDebug output for QTabletEventShawn Rutledge2014-08-052-3/+27
| | | | | | | | | | Change-Id: Ic2819eaa5ed0e3666062f00994b72dee0b2cba66 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* | Introduce QRasterWindowLaszlo Agocs2014-08-053-2/+209
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A simple convenience class providing a QWindow that has a paintEvent and supports opening a painter on itself. It behaves exactly like QOpenGLWindow in this respect, which is not surprising since they share the same base class (QPaintDeviceWindow). QRasterWindow does not however have any OpenGL dependencies and will be present in -no-opengl builds too. [ChangeLog] Added QRasterWindow, a thin convenience wrapper for a QWindow on which a QPainter can be opened. Done-with: Jorgen Lind <jorgen.lind@digia.com> Change-Id: I37e82720492945d7b85d5f713eea8d5f7556e511 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>
* | Introduce QOpenGLWindowLaszlo Agocs2014-08-056-4/+1153
| | | | | | | | | | | | | | | | | | | | | | [ChangeLog] Added QOpenGLWindow. This serves as a convenience class for creating windows showing OpenGL content via an API similar to QGLWidget and without any widget dependencies. Done-with: Jorgen Lind <jorgen.lind@digia.com> Task-number: QTBUG-36899 Change-Id: I52e9bc61acb129dbfd3841b3adeffab2dbcf7f05 Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* | Merge "Merge remote-tracking branch 'origin/5.3' into dev" into refs/staging/devFrederik Gladhorn2014-08-051-1/+24
|\ \
| * | Merge remote-tracking branch 'origin/5.3' into devFrederik Gladhorn2014-08-041-1/+24
| |\| | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: config.tests/arch/arch.cpp src/opengl/qgl_qpa.cpp src/widgets/kernel/qapplication.cpp Change-Id: I80b442a4c2c9632743a5b5c7319ff201ec5bc4fd
| | * Merge "Merge remote-tracking branch 'origin/stable' into 5.3" into ↵Oswald Buddenhagen2014-07-311-0/+23
| | |\ | | | | | | | | | | | | refs/staging/5.3
| | | * Merge remote-tracking branch 'origin/stable' into 5.3Oswald Buddenhagen2014-07-301-0/+23
| | | |\ | | | | | | | | | | | | | | | Change-Id: I2a044d44ca991ba20ddd710053b85afb51e362d3
| | | | * move loading of testability driver from QApplication to QGuiApplicationMichael Zanetti2014-07-031-0/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is useful without QWidget too. Change-Id: Ic7857e52e4a8f57c1205615a1f30323b486814af Reviewed-by: Richard J. Moore <rich@kde.org> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Alberto Mardegan <mardy@users.sourceforge.net> Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
| | * | | Fix double clicks in eglfsLaszlo Agocs2014-07-311-1/+1
| | |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The window can be null in the qpa event. This is indicated by the nullWindow field to be able to differentiate between a dead window and a genuinely null input. [ChangeLog] Double click events are now sent correctly on eglfs. Task-number: QTBUG-40146 Change-Id: I63c8d08e0dec217b929161d2e827e0c273b4dd3e Reviewed-by: Will Wagner <willw@carallon.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* | | | Rewrite debug output of event classes.Friedemann Kleint2014-08-051-287/+295
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Introduce functions to return class name and type name by type. - Move QDebugStateSaver up. - Add verbose output for DnD, tablet, native gestures, context menu, enter and expose events. Task-number: QTBUG-38858 [ChangeLog][QtGui][QEvent] The debug output for events has been significantly improved. Change-Id: I3f11e34c3c9d6a3c6db596be4051b801f00e6153 Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
* | | | Rename globalShareContext to qt_gl_global_share_contextJocelyn Turcotte2014-08-042-11/+26
|/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | This makes it easier to forward-declare the exported symbol from other Qt modules without having to include the private headers. This keeps the old API until dependent submodules are updated. Change-Id: I08310a684b79f2f612f2ce897a601ff74178bee6 Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* | | Support multimedia keys on WindowsAllan Sandfeld Jensen2014-08-021-4/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We currently do not receive events from most multimedia keys on Windows because they are sent using appcommand events instead of the normal key events. This patchs adds support for parsing appcommand events. Change-Id: I19f568b6fa0d3d136e3a22318df1499a1fab6edb Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
* | | Add debug output for input method related events.Friedemann Kleint2014-07-281-0/+67
| | | | | | | | | | | | | | | | | | | | | Task-number: QTBUG-40402 Change-Id: Ide96588488eb6d95f4c39f3da749d301d9ec858e Reviewed-by: Liang Qi <liang.qi@digia.com> Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* | | QTabletEvent documentation improvementsShawn Rutledge2014-07-281-35/+58
| | | | | | | | | | | | | | | | | | | | | | | | | | | Recent patches have added new functionality, and other aspects of the documentation have been outdated for some time. Task-number: QTBUG-39458 Change-Id: Ib7013eee091ff443971485133a58785d9284bc3d Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
* | | add buttons to QTabletEventShawn Rutledge2014-07-288-27/+170
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Until now, it has been necessary for tablet-oriented applications which care about multi-button styli to reject each tablet event and wait for the mouse event in order to know which buttons are pressed. This patch adds the new API and also the X11/xcb implementation. [ChangeLog][QtCore][Tablet support] Added buttons to QTabletEvent Task-number: QTBUG-39458 Change-Id: If2c9ec1ceacc1700a82686c5fc6f568f9111055a Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
* | | Merge remote-tracking branch 'origin/5.3' into devFrederik Gladhorn2014-07-221-0/+5
|\| | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/widgets/kernel/qwidget_qpa.cpp src/widgets/widgets.pro Change-Id: I697eec936c4e1a6c360edc8f0b472e23c0461ecb
| * | Ensure transient parents are top level widgets.Friedemann Kleint2014-07-181-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When a dialog was parented on a native child widget, its window handle was used as a transient parent. This confused QPlatformWindow::initialGeometry() among other things. Use top level window as is in Qt 4. Task-number: QTBUG-40195 Change-Id: Ic82adc276175f92adde825fb2551274351e41f30 Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
* | | Rename QPixelFormat enum value to avoid conflict with X.h.Axel Rasmussen2014-07-142-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit fixes a potential compile error where pixelformat.h would not compile if X.h from x11proto was included first, since X.h #define's GrayScale as an integer constant. Task-number: QTBUG-40087 Change-Id: I7208a204259c6d3a13b5d0cbc98a76bb54b8b494 Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
* | | Make QWindow::close go through the QWindowSystemInterfaceJorgen Lind2014-07-101-19/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This causes a closeEvent to be sent for all calls to close. As a side effect destroy now handles more of the state in QGuiApplication. [ChangeLog][QtGui][QWindow] QWindow::close() sends a QCloseEvent which must be accepted before destroy() will be called. destroy() is the function to close the window without confirmation. Task-number: QTBUG-40093 Change-Id: I1ce09da4940fc29fae8decf40548a42e3bec6eca Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
* | | Merge remote-tracking branch 'origin/5.3' into devFrederik Gladhorn2014-07-101-1/+1
|\| | | | | | | | | | | Change-Id: Ia12ffdb27ecdf25c2a2bdb0eed1945387502108a
| * | Fix debug output of QTouchEvent.Friedemann Kleint2014-07-041-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | Return dbg.space(). Task-number: QTBUG-29946 Change-Id: Ia79b297ee3801ccba9f7b1c22ac7a8761cbe8b2e Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
* | | Improve debug output of QPalette.Friedemann Kleint2014-07-081-3/+27
| | | | | | | | | | | | | | | | | | Task-number: QTBUG-39997 Change-Id: I25b8ce8791c25c7ef7b97270ec50dad45fbdfecd Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
* | | Add convenience function for checking screen changes to QPlatformWindow.Friedemann Kleint2014-07-072-0/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add function returning the screen for a new geometry for geometry change events. This ensures that the checking is done in platform screen coordinates (which might differ from QScreen coordinates due to high-DPI changes) and also that no screen changes are emitted for child windows. Change-Id: I406750f59f006f834c386d09c0c85a804014924a Reviewed-by: Jørgen Lind <jorgen.lind@digia.com> Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* | | Make it possible to know when a screen is being removedAleix Pol2014-07-024-1/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | So far, we had to listen to the QObject::destroyed signal from the QScreen class to figure out whether a screen was removed. Often, this is already too late, given that most of the QWindows have been moved by then and we don't get to react before the windows are being set to the primary screen. This patch introduces a new signal that will notify about a screen removal before the screen is started to be destroyed, so that the application gets to decide what to do with the screens before Qt decides to move things around. [ChangeLog][QtGui][QGuiApplication] Added QGuiApplication::screenRemoved signal to inform that a screen has been removed, before Qt reacts to it. Change-Id: I99304179f4d345cae581a87baac6cff7b8773dea Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
* | | QGuiApplication::paletteChanged(const QPalette &palette) [signal]J-P Nurmi2014-07-022-0/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | This allows QQuickSystemPalette to listen to palette changes without installing an expensive event filter on the application object. Change-Id: I8b693e047d993c444e393d7a714a5709692c3560 Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com> Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
* | | Merge "Merge remote-tracking branch 'origin/5.3' into dev" into refs/staging/devFrederik Gladhorn2014-07-012-1/+12
|\ \ \
| * | | Merge remote-tracking branch 'origin/5.3' into devFrederik Gladhorn2014-07-012-1/+12
| |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: mkspecs/qnx-x86-qcc/qplatformdefs.h src/corelib/global/qglobal.h src/network/socket/qnativesocketengine_winrt.cpp src/plugins/platforms/android/androidjniaccessibility.cpp src/plugins/platforms/windows/qwindowswindow.cpp Manually adjusted: mkspecs/qnx-armle-v7-qcc/qplatformdefs.h to include 9ce697f2d54be6d94381c72af28dda79cbc027d4 Thanks goes to Sergio for the qnx mkspecs adjustments. Change-Id: I53b1fd6bc5bc884e5ee2c2b84975f58171a1cb8e
| | * | QGuiApplication: Document -plugin command line argument.Friedemann Kleint2014-06-191-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | Task-number: QTBUG-38972 Change-Id: Ie4dd6d70e60822a5a3626b10cd90d081897d646d Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| | * | Fix animations in static buildsKai Koehne2014-06-171-0/+4
| | |/ | | | | | | | | | | | | | | | | | | | | | | | | Make sure qRegisterGuiGetInterpolator is called even for static builds. Task-number: QTBUG-37341 Change-Id: I65735a558d5bbfaa02fa4ec47d55ddf33ca1991a Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
| | * QPlatformClipboard::emitChanged(): Do not emit signals when closing down.Friedemann Kleint2014-06-061-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | Prevents a shutdown crash in the Qt Mfc migration solution. Task-number: QTBUG-39317 Change-Id: I7f0aa40715baed57ff59682a477084347dfd45bc Reviewed-by: Andy Shaw <andy.shaw@digia.com>
* | | Fix init order of platfromIntegration and forcedWindowIconFrederik Gladhorn2014-07-011-2/+5
| | | | | | | | | | | | | | | | | | | | | | | | The problem shows when running tst_qguiapplication.cpp and configuring with -no-widgets Change-Id: I9f241760953e543d488096c66a3e886a14f6ae50 Reviewed-by: David Faure <david.faure@kdab.com>
* | | Move deletion of the QDrag object into QDragManager::drag().Friedemann Kleint2014-07-011-0/+1
|/ / | | | | | | | | | | | | | | | | | | The QDrag objects were apparently leaking on all platforms other than XCB. Task-number: QTBUG-39651 Change-Id: I09efcd250c1f42eb385e9d5779be7af6b9b59376 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com> Reviewed-by: Tim Jenssen <tim.jenssen@digia.com>
* | Do not add QOffscreenSurface windows to the global listLaszlo Agocs2014-06-301-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QOffscreenSurface has to stay usable even after returning from app.exec(). Hence close()ing the underlying hidden window, that is used on platforms that do not provide real offscreen surfaces, is wrong. Normally all QWindows are closed (and thus destroy()'ed) when quitting the application, meaning the the offscreen surface cannot be made current anymore after returning from exec(). This is an unnecessary limitation and makes certain cleanup operations impossible. Task-number: QTBUG-39908 Change-Id: Iea1489378a18f29ff84ba8f13a6dad2d66d2b315 Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* | Propagate source/flags of QMouseEvent to QGraphicsSceneMouseEvent.Friedemann Kleint2014-06-251-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It is useful to be able to detect synthesized mouse events in GraphicsView as well. [ChangeLog][QtWidgets][QGraphicsSceneMouseEvent] Accessors for Qt::MouseEventSource and Qt::MouseEventFlags were added to QGraphicsSceneMouseEvent to enable detection of synthesized mouse events. Task-number: QTBUG-39814 Change-Id: Ib5835fef1f484005f9b0fc86518ed32ea79cd80f Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com> Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* | QGuiApplication::layoutDirectionChanged(Qt::LayoutDirection) [signal]J-P Nurmi2014-06-252-2/+8
| | | | | | | | | | | | | | | | This allows QQuickApplication to listen to layout direction changes without installing an expensive event filter on the application object. Change-Id: I2d7d8906acecbc092657c4bd918bbdc9aad9744c Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
* | Fix screen handling for child windows.Friedemann Kleint2014-06-183-37/+83
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Change the semantics of QWindowPrivate::screen to contain the screen of top level window only. Child windows always return the screen of their toplevel window by recursing up. The QPA plugins then no longer need to report screen changes for child windows. Change setScreen() accordingly, bail out for child windows, and emit screenChanged() recursively. Also add a check to setParent() preventing screen changes. Task-number: QTBUG-36659 Change-Id: I19c8e12217cba1513e947a027f2492abc7b98816 Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com> Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* | Improve debug output of events.Friedemann Kleint2014-06-161-10/+42
| | | | | | | | | | Change-Id: Ifc9817ca34a85cc7d9bd17dba9828249116fa0f6 Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
* | Merge remote-tracking branch 'origin/stable' into devJ-P Nurmi2014-06-051-0/+6
|\| | | | | | | | | | | | | | | | | | | Conflicts: mkspecs/features/qt.prf src/plugins/platforms/xcb/qxcbwindow.h src/tools/qdoc/qdocindexfiles.cpp src/widgets/kernel/qwidget_qpa.cpp Change-Id: I214f57b03bc2ff86cf3b7dfe2966168af93a5a67
| * Call doneCurrent on QOpenGLContext when the surface diesLaszlo Agocs2014-05-231-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Doing makeCurrent() followed by destroying the surface (and no doneCurrent) results in still having the pointer stored internally in the QOpenGLContext. If then a function like defaultFramebufferObject() is called, the pointer is dereferenced. To fix this, the doneCurrent() has to be called when the surface is destroyed before the context without doneCurrent(). This is pretty much what the user would expect anyhow. Task-number: QTBUG-38994 Change-Id: Ibd4083d9291c7fd39b38ce81a988a8e0c9d55d60 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
* | Remove tracking of the current fboLaszlo Agocs2014-06-021-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When binding an FBO directly via glBindFramebuffer, the QOpenGLContext's internal current_fbo, that is maintained by QOpenGLFramebufferObject, becomes out of sync. This will lead to QOpenGLFramebufferObjects thinking they are still bound. Such state tracking should be avoided since it is becoming increasingly difficult to keep it consistent between the various OpenGL API wrappers and will never be robust enough when the application changes the state by directly calling OpenGL functions. current_fbo is now removed in QtGui. QtOpenGL is not touched. Change-Id: Id809aab1306c9486d1e2ba3bb5aa93593659e920 Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* | Fix a crash when using QtQuickControls with core profileBerthold Krevert2014-05-221-4/+25
| | | | | | | | | | | | | | | | | | | | QOpenGLContext::versionFunctions returns 0, if a QOpenGLFunctions object for a legacy OpenGL version is requested while using the core profile. This leads to a crash QOpenGLContextPrivate::maxTextureSize() Change-Id: I32845643094336cebcc666806a411524fe3e869b Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* | Remove unnecessary friend declarations from qevent.h.Friedemann Kleint2014-05-151-5/+0
| | | | | | | | | | Change-Id: Iec35b94f3898004850a076d4760d675248246ea7 Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* | Don't crash when platform plugin sends us two close events.Gunnar Sletta2014-05-151-0/+6
| | | | | | | | | | Change-Id: Icfe2954908fad2abfb4195fc535aadd1e6302f76 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
* | Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2014-05-133-7/+21
|\| | | | | | | | | | | | | Conflicts: src/gui/kernel/qguiapplication.cpp Change-Id: Ibe75603dc8a51769db6550ea3f07bc8d19b0be85
| * Document the X11 DISPLAY variable in the -display option docsThiago Macieira2014-05-091-0/+2
| | | | | | | | | | | | Change-Id: I20412616c91d187e2befc39134a480369347b8cb Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Leena Miettinen <riitta-leena.miettinen@digia.com>
| * Doc: fix -qwindowgeometry and -qwindowtitle option docsThiago Macieira2014-05-091-2/+1
| | | | | | | | | | | | | | | | | | | | The former was documented twice and the latter was missing the qdoc formatting. Change-Id: Id8dfb21a0c2fd26134b5738448971fe2627a12d6 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Leena Miettinen <riitta-leena.miettinen@digia.com> Reviewed-by: David Faure <david.faure@kdab.com>
| * Document that the -reverse option is only for debugging and its defaultThiago Macieira2014-05-091-1/+3
| | | | | | | | | | | | | | | | | | You should never force that option. Just let Qt automatically detect from the environment. Change-Id: I43ae4951969d2067cc111eff6302921a0af82658 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Leena Miettinen <riitta-leena.miettinen@digia.com>
| * Document that env variables are preferable to cmdline optionsThiago Macieira2014-05-091-1/+8
| | | | | | | | | | | | | | | | | | Environment variables are passed along to child processes, command-line options aren't. Change-Id: Ia52c1d8cfeeb2f7490e73ac50b58ba07c2eebfa8 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Leena Miettinen <riitta-leena.miettinen@digia.com>
| * Avoid corruption in Q(Open)GLFunctions when used on multiple threadsLaszlo Agocs2014-05-092-2/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Using Q(Open)GLFunctions concurrently on multiple threads had some issues due to incorrect synchronization: The m_groups list in the QOpenGLMultiGroupSharedResource, in which the Q(Open)GLFunctions instance is stored, became corrupted under certain scenarios, for example in the tst_qglthreads autotest and any two threads that happen to enter an initializeOpenGLFunctions() or QOpenGLContext::functions() call concurrently. Locking in value() has been introduced in 666c25c089acf7fcc9e9a6b7665074c6286d604e to fix such issues, however using the context group's mutex is not enough: that still allows two threads using two contexts with a different context group to concurrently enter insert(). Instead, the MultiGroupSharedResource has to have its own mutex to protect its own member variables. Task-number: QTBUG-38771 Change-Id: If01c44c2084b95e487bc9146576ca180ed8044da Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>