summaryrefslogtreecommitdiffstats
path: root/src/corelib/plugin
Commit message (Collapse)AuthorAgeFilesLines
* Update copyright headersJani Heikkinen2015-02-1120-137/+137
| | | | | | | | | | | | | | | | | | Qt copyrights are now in The Qt Company, so we could update the source code headers accordingly. In the same go we should also fix the links to point to qt.io. Outdated header.LGPL removed (use header.LGPL21 instead) Old header.LGPL3 renamed to header.LGPL3-COMM to match actual licensing combination. New header.LGPL-COMM taken in the use file which were using old header.LGPL3 (src/plugins/platforms/android/extract.cpp) Added new header.LGPL3 containing Commercial + LGPLv3 + GPLv2 license combination Change-Id: I6f49b819a8a20cc4f88b794a8f6726d975e8ffbe Reviewed-by: Matti Paaso <matti.paaso@theqtcompany.com>
* QtCore: Use QDebugStateSaver in (almost) all QDebug operator<<Kai Koehne2015-02-091-1/+2
| | | | | | | | | Unify the behavior of the different operator<< by always using QDebugStateSaver (appending an optional space at exit), and making sure that the space(), nospace() setting isn't 'leaked'. Change-Id: I38e4f82fa6f7419d8b5edfc4dc37495af497e8ac Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
* WinRT: fix QLibrary::isLibrary() due to incomplete #if statementJochen Seemann2015-02-071-1/+1
| | | | | | | | | Q_OS_WINRT was missing in the Windows-condition. Condition was simplified through use of Q_OS_WIN. Change-Id: I1a49d2d9c413dc2156930b6915e1675abcdde36f Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
* Use Q_ENUM and Q_FLAG for types in QtCoreOlivier Goffart2015-02-041-1/+2
| | | | | | Change-Id: I33590a9c4c6d87c5bbba1d201e32c6bf1bd3e00b Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* Use QStringLiteral to prevent runtime string conversions.Milian Wolff2015-01-051-11/+17
| | | | | Change-Id: I0b2f06f9f09868051e84af80b2c61b5ada99af69 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Merge the multiple implementations of fromHex tooThiago Macieira2014-12-131-9/+3
| | | | | Change-Id: I8c22f784207dd8bffb88e70ac3c867abf0af86af Reviewed-by: Jason McDonald <macadder1@gmail.com>
* Merge the different implementations of toHex in one central placeThiago Macieira2014-12-131-6/+3
| | | | | | | | | It's a simple enough function, but we don't need to duplicate those 17 bytes all over the place. Now they'll be duplicated at most once per library. Change-Id: Ic995e2a934b005e7e996e70f2ee644bfa948eb38 Reviewed-by: Jason McDonald <macadder1@gmail.com>
* Add Q_DECL_RELAXED_CONSTEXPR to QUuidOlivier Goffart2014-12-111-8/+7
| | | | | | Change-Id: I0fa5806ef7a8e14b0728f0b914fa9ffd0dbad811 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* Add DeepBind option to QLibraryAllan Sandfeld Jensen2014-12-023-1/+11
| | | | | | | | | | | | | | | | Adds an option to request the RTLD_DEEPBIND flag to dlopen. On Linux this can be used to force a library to resolve global symbols locally instead of using the similarly named symbols already loaded. This makes it possible to load and use plugins linked against Qt 4 without crashing. [ChangeLog][QtCore][QLibrary] Added DeepBindHint which maps to RTLD_DEEPBIND on Linux making it possible to load libraries with external symbols that clash with already loaded ones, such as plugins linked to Qt4. Change-Id: I4edb4af68e4a47e932a87d108360dba8d91dc34a Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Merge remote-tracking branch 'origin/5.4' into devFrederik Gladhorn2014-11-241-1/+1
|\ | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/corelib/io/qiodevice.cpp src/plugins/bearer/linux_common/qofonoservice_linux.cpp src/plugins/bearer/linux_common/qofonoservice_linux_p.h src/plugins/platforms/android/qandroidplatformtheme.cpp src/tools/bootstrap/bootstrap.pro src/widgets/styles/qmacstyle_mac.mm Change-Id: Ia02aab6c4598ce74e9c30bb4666d5e2ef000f99b
| * Place the Qt plugin metadata in a PE-COFF section with MinGW tooThiago Macieira2014-11-081-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | Commit ec360d7ad90945273c7d96c9a159131dcbcd67c3 made it work for ELF platforms, Apple platforms and for MSVC, but we apparently forgot it for MinGW. This patch corrects that mistake. We won't have the PE-COFF section parser until 5.5, but this will at least making Qt 5.4-built plugins work on the faster case. Change-Id: I51b06837dc321eaa4724c9598293cf85570f67fc Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* | Merge remote-tracking branch 'origin/5.4' into devFrederik Gladhorn2014-10-091-4/+8
|\| | | | | | | Change-Id: I05fcd8dc66d9ad0dc76bb7f5bae05c9876bfba14
| * QFactoryLoader: de-duplicate two QStringLiteralsMarc Mutz2014-10-091-4/+8
| | | | | | | | | | | | | | | | | | | | | | | | When seemingly identical QStringLiterals are used in different functions, due to the use of lambdas and scoping, they produce different lambda types and thus duplicated QStringLiteral data. Fix by moving the QStringLiterals into inline functions and calling those instead. Change-Id: Ifaa124ec74e201ccc63fd9afce042f8b2ff22b9e Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Merge remote-tracking branch 'origin/5.4' into devOswald Buddenhagen2014-09-2919-361/+220
|\| | | | | | | | | | | | | | | | | | | | | Conflicts: src/corelib/tools/qbytearray.cpp src/gui/image/qimage.cpp src/gui/image/qppmhandler.cpp src/gui/kernel/qguiapplication.cpp src/gui/painting/qpaintengine_raster.cpp Change-Id: I7c1a8e7ebdfd7f7ae767fdb932823498a7660765
| * Doc: 2 minor corrections in corelib/pluginNico Vertriest2014-09-251-2/+2
| | | | | | | | | | | | Task-number: QTBUG-40362 Change-Id: I4fa4a69c13a60f8c7915b6c9659a4daaae4ecc1a Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
| * Update license headers and add new license filesMatti Paaso2014-09-2419-359/+207
| | | | | | | | | | | | | | | | | | - Renamed LICENSE.LGPL to LICENSE.LGPLv21 - Added LICENSE.LGPLv3 - Removed LICENSE.GPL Change-Id: Iec3406e3eb3f133be549092015cefe33d259a3f2 Reviewed-by: Iikka Eklund <iikka.eklund@digia.com>
| * Merge remote-tracking branch 'origin/5.3' into 5.4Frederik Gladhorn2014-09-231-0/+11
| |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The isAlwaysAskOption was removed in 38621713150b663355ebeb799a5a50d8e39a3c38 so manually removed code in src/plugins/bearer/connman/qconnmanengine.cpp Conflicts: src/corelib/global/qglobal.h src/corelib/tools/qcollator_macx.cpp src/corelib/tools/qstring.cpp src/gui/kernel/qwindow.cpp src/gui/kernel/qwindow_p.h src/gui/text/qtextengine.cpp src/platformsupport/fontdatabases/fontconfig/qfontenginemultifontconfig_p.h src/plugins/platforms/android/qandroidinputcontext.cpp src/plugins/platforms/xcb/qglxintegration.cpp src/plugins/platforms/xcb/qglxintegration.h src/plugins/platforms/xcb/qxcbconnection_xi2.cpp src/testlib/qtestcase.cpp src/testlib/qtestlog.cpp src/widgets/dialogs/qfiledialog.cpp src/widgets/kernel/qwindowcontainer.cpp tests/auto/corelib/tools/qcollator/tst_qcollator.cpp tests/auto/gui/text/qtextscriptengine/tst_qtextscriptengine.cpp tests/auto/widgets/kernel/qwidget_window/tst_qwidget_window.cpp tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp Change-Id: Ic5d4187f682257a17509f6cd28d2836c6cfe2fc8
| | * Add missing private headers warningSamuel Gaist2014-09-041-0/+11
| | | | | | | | | | | | | | | Change-Id: I7a4dd22ea3bcebf4c3ec3ad731628fd8f3c247e0 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | QLibrary: simplify qt_debug_component()Marc Mutz2014-09-121-4/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Instead of initializing debug_env to -1 (thus forcing the variable into the data segment), and then overwriting the -1 with a read from the env-var, dynamically initialize the variable from the env-var directly, thus allowing the variable back into the bss segment (which doesn't occupy storage in the executable). There may have been a reason to do it this way when the old code could fail due to the memory allocation involved, but now with qEnvironmentVariableIntValue(), that is no longer a reason. Change-Id: I9f21b0783ff348f50b574395fc07f2869a14102e Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | QLibrary: use qEnvironmentVariableIntValue()Marc Mutz2014-09-121-1/+1
|/ / | | | | | | | | | | | | | | It doesn't allocate memory, so cannot throw and is a lot faster than qgetenv(). Change-Id: I8d440619edfbd90045564e1f92676f1e1f87e136 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Don't store QLibraryPrivate with empty file names in the global storeThiago Macieira2014-07-231-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | They shouldn't exist in the first place. They exist in two cases only: 1) mistake by the user in the QLibrary or QPluginLoader constructors or setFileName 2) as a kludge for setLoadHints before a file name is set (we need to store the user's requested hints somewhere) This is important for the second case, as otherwise all QLibrary and QPluginLoader objects without a file name would share the setting. Task-number: QTBUG-39642 Change-Id: Iebff0252fd4d95a1d54caf338d4e2fff4de3b189 Reviewed-by: David Faure <david.faure@kdab.com>
* | Fix a few more race conditions with QLibrary::LoadHintsThiago Macieira2014-07-234-22/+32
|/ | | | | | | | | | This commit makes replaces the loadHints member with a setter, a getter and an atomic variable. The setter will not set anything if the library has already been loaded. Task-number: QTBUG-39642 Change-Id: Ibb7692f16d80211b52aaf4dc88db1a989738a24d Reviewed-by: David Faure <david.faure@kdab.com>
* Move most of the QLibraryPrivate initialization to its constructorThiago Macieira2014-06-213-16/+32
| | | | | | | | | | | | | | This commit moves the setting of the loadHints to inside the constructor or to QLibraryStore::findOrCreate (which is under a mutex). This avoids data race conditions with two threads asking for the same plugin at the same time, with different load hints. This also opportunistically moves the setting of the error message for empty file names. Task-number: QTBUG-39642 Change-Id: I497a41781d10e407d6420116a0b05fdfe2b548de Reviewed-by: David Faure <david.faure@kdab.com>
* Move the hex digits out of _q_toHexThiago Macieira2014-05-141-2/+2
| | | | | | | | Avoids them being duplicated several times in QtCore Change-Id: Idee0168ed9d452a572ad46e2a14d2d4d3c7d2f7e Reviewed-by: Robin Burchell <robin+qt@viroteck.net> Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* QNX: Work around dlclose issueBernd Weimer2014-04-091-0/+8
| | | | | | | | "Shared objects still referenced" dlerror should actually be treated as "for your information" only, not as an actual error. Change-Id: Ie02bd1db0dd2dc93bb759f8b6c7e825070e17bb9 Reviewed-by: Fabian Bumberger <fbumberger@rim.com>
* Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2014-02-071-6/+15
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/gui/kernel/qguiapplication.cpp src/plugins/platforms/android/androidjnimain.cpp src/plugins/platforms/android/qandroidplatformintegration.cpp src/plugins/platforms/android/qandroidplatformintegration.h src/plugins/platforms/android/qandroidplatformopenglcontext.cpp src/plugins/platforms/cocoa/qcocoawindow.h src/plugins/platforms/cocoa/qcocoawindow.mm src/plugins/platforms/xcb/qxcbconnection_xi2.cpp src/sql/doc/src/sql-driver.qdoc src/widgets/widgets/qtoolbararealayout.cpp Change-Id: Ifd7e58760c3cb6bd8a7d1dd32ef83b7ec190d41e
| * Don't allow the QLibraryStore to be recreated during shutdownThiago Macieira2014-01-221-6/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When QtCore's global destructors are run, they delete the global QLibraryStore qt_library_data and set the pointer to null. If something happened to call QLibraryStore::instance() later, it would be recreated and then weird things might happen. So prevent that from happening. That usually cannot happen, since the only thing that can run after QtCore global destructors are other QtCore global destructors or global destructors from libraries that do not depend on QtCore. So we're reasonably safe. There are two conditions in which something could run after QLibraryStore::cleanup() and still try to access QLibraryStore: 1) indirect dependency, like a global destructor from a library that doesn't depend on QtCore running code from another module that does. 2) static builds of Qt modules. In that case, the order of the global destructors is totally arbitrary and we could get one from a module that depends on QtCore running after QtCore's. That is the case from the bug report. Task-number: QTBUG-36294 Change-Id: Id199671275fd2535acf2d158857ce46b474e579b Reviewed-by: Kai Koehne <kai.koehne@digia.com> Reviewed-by: Tim Jenssen <tim.jenssen@digia.com>
* | expand tabs and related whitespace fixes in *.{cpp,h,qdoc}Oswald Buddenhagen2014-01-131-1/+1
| | | | | | | | | | | | | | | | the diff -w for this commit is empty. Started-by: Thiago Macieira <thiago.macieira@intel.com> Change-Id: I77bb84e71c63ce75e0709e5b94bee18e3ce6ab9e Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2014-01-101-1/+2
|\| | | | | | | Change-Id: I99af0bef7f1c931533a324ebcfb27c40ee871a5e
| * Ensure that the Qt5Core library does not contain "QTMETADATA ".Friedemann Kleint2014-01-091-1/+2
| | | | | | | | | | | | | | | | | | | | | | In the event the plugin loader encounters it due to some configuration problem, it is otherwise detected as a plugin causing a crash when trying to read the meta data. Task-number: QTBUG-35970 Change-Id: I34182b3a61125e3b192dfd4b1dc03bd1e98c693e Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* | Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-12-241-0/+1
|\| | | | | | | Change-Id: I2defae1904154283446b069d151c3ef57302ec7b
| * Doc: corrected broken linksNico Vertriest2013-12-201-0/+1
| | | | | | | | | | | | | | | | | | | | | | Task-number: QTBUG-34749 Corrected link to drag and drop example. Corrected link to {mandatory fields} Created target referring to macros for defining plugins Change-Id: I387a2d9bab428b2eacd8d371f08c72f42f7e2be2 Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
* | Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-12-051-1/+1
|\| | | | | | | | | | | | | Conflicts: src/sql/drivers/sqlite/qsql_sqlite.cpp Change-Id: Ia7cffd2c99ae3d5eea6b5740683c06e921336dcd
| * Doc: fixed invalid referenceNico Vertriest2013-12-031-1/+1
| | | | | | | | | | | | | | | | | | | | Link to "Getting started with qmake" was invalid Task-number: QTBUG-34749 Change-Id: I782dc99f5182f2fe7661377eb82f35ebb50a46cf Reviewed-by: Martin Smith <martin.smith@digia.com> Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
* | Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-11-261-2/+2
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For the conflicts in msvc_nmake.cpp the ifdefs are extended since we need to support windows phone in the target branch while it is not there in the current stable branch (as of Qt 5.2). Conflicts: configure qmake/generators/win32/msvc_nmake.cpp src/3rdparty/angle/src/libEGL/Surface.cpp src/angle/src/common/common.pri src/corelib/global/qglobal.h src/corelib/io/qstandardpaths.cpp src/plugins/platforms/qnx/qqnxintegration.cpp src/plugins/platforms/qnx/qqnxscreeneventhandler.h src/plugins/platforms/xcb/qglxintegration.h src/widgets/kernel/win.pri tests/auto/corelib/thread/qreadwritelock/tst_qreadwritelock.cpp tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp tests/auto/gui/text/qtextdocument/tst_qtextdocument.cpp tools/configure/configureapp.cpp Change-Id: I00b579eefebaf61d26ab9b00046d2b5bd5958812
| * qcompilerdetection.h: add Q_COMPILER_UNIFORM_INITMarc Mutz2013-11-151-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Up to now, the feature classe Uniform Initialization was subsumed by the Q_COMPILER_INITIALIZER_LISTS flag together with support for std::initializer_list. This caused at least two problems: 1. On QNX, the standard libray does not ship <initializer_list>, even though the compiler (a GCC 4.6, IIRC) supports it. But since there was only one Q_COMPILER flag for both, support for the compiler-only part of the feature had to be disabled, too. 2. MSVC 2013 supports initializer lists, but has a bug that renders full uniform initialization support, as required for QUuid, useless. By splitting the feature into two, we can separate them better, and do so in QUuid, which is the only class that currently takes advantage of uniform initialization (to provide constexpr constructors). Since Q_COMPILER_INITIALIZER_LISTS worked as a flag for uniform initialization so far, with the two known exceptions above, UNIFORM_INIT is defined whenever INITIALIZER_LIST is, except that I don't revert UNIFORM_INIT on QNX as I do for INITIALIZER_LISTS and that I expect the MSVC 2013 features to set INITIALIZER_LIST, but not UNIFORM_INIT. Task-number: QTBUG-34705 Change-Id: I81916e950a0f3aab3de7977e0326d2de3d31b14c Reviewed-by: Yuchen Deng <loaden@gmail.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Refactor plugin loading for WinRTMaurice Kalinowski2013-11-051-1/+5
|/ | | | | | | | | | | | | | | | | Specify the root directory to be the package root. Only plugins inside the root can be opened (actually also only files). Furthermore current defaults to the package root now, which in most cases is identical to previous behavior. When attempting to load a plugin the path can either be specified in host format "C:/..." or as plugin absolute "/platforms/...". Check for both, with preference of latter case, like when qt.conf is used with / being used as plugin path. Change-Id: I7e3da293362488b62a3357c4882ebf5e048dcf95 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Andrew Knight <andrew.knight@digia.com> Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
* Doc: Adding mark-up to boolean default values.Jerome Pasion2013-10-083-25/+25
| | | | | | | | | | | | | | | | | Default values should have mark-up to denote that they are code. This commit changes: -"property is true" to "property is \c true". -"Returns true" to "Returns \c true". -"property is false" to "property is \c false". -"returns true" to "returns \c true". -"returns false" to "returns \c false". src/3rdparty and non-documentation instances were ignored. Task-number: QTBUG-33360 Change-Id: Ie87eaa57af947caa1230602b61c5c46292a4cf4e Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
* WinRT: QLibrary & plugin supportAndrew Knight2013-09-202-1/+19
| | | | | | | | | | | | Avoid unsupported Win32 API while providing alternative codepaths for in-package library loading. Change-Id: Iaad059d6c94d0347cbaa8d9b9240806afcb29561 Done-with: Andrew Knight Done-with: Kamil Trzcinski Reviewed-by: Andrew Knight <andrew.knight@digia.com> Reviewed-by: Oliver Wolff <oliver.wolff@digia.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* qpluginloader: fix static build (on iOS)Richard Moe Gustavsen2013-09-051-0/+2
| | | | | | | | | | Since the function locatePlugin is unused when building Qt statically, the build fails on iOS. This patch will ensure that we only define it for shared builds. Change-Id: Idf3c3246d3cac94a3c001cc261f326e9a396aa31 Reviewed-by: David Faure <david.faure@kdab.com>
* QPluginLoader: add 'staticPlugins' functionRichard Moe Gustavsen2013-09-045-15/+66
| | | | | | | | | | | | | | | | | | Currently there is no API to extract the meta data from static plugins. This is needed in e.g QtDeclarative for loading static module plugins. This patch moves the 'staticPlugins' function from QLibraryPrivate into QPluginLoader, and makes it public. As such, we now also export QStaticPlugin. Since an application developer cannot do much with raw metadata, we add a new function QStaticPlugin::metaData() that returns the QJsonObject for the plugin. The old metaData function is renamed 'rawMetaData'. Change-Id: Idb0bf9ad8ebb13340565512e1998b26e762a357e Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-07-231-1/+2
|\ | | | | | | | | | | | | Conflicts: tests/auto/dbus/qdbusabstractinterface/tst_qdbusabstractinterface.cpp Change-Id: I18a9d83fc14f4a9afdb1e40523ec51e3fa1d7754
| * Fix warning about using QString's const char* constructor on MacThiago Macieira2013-07-201-1/+2
| | | | | | | | | | Change-Id: I20ca50fdcdcfb075ad317247f147e4eb007a0c44 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
* | Make the Mach-O size checking a little more robustThiago Macieira2013-07-201-20/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It's not necessary to check at every point if we know the minimum file size: it must contain at least the header, one segment (__TEXT) and one section (qtmetadata). Most files have more than one segment and more than one loader command, so this check does not mean we can eliminate the checks further down. Also be more resilient against corruptions in the header data: check not only the additions, but the values themselves. For example, an offset + size addition could be smaller than the file size when the addition overflows in 32-bit. Another thing is that the cmdsize fields could be corrupt too. Change-Id: I7968a769c1cbe9150270c91823cafc4f8f833876 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* | Simplify the QLibrary plugin-detection codeThiago Macieira2013-07-201-104/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The reason why the scanning of files was restricted to Unix is lost in history. My guess is that it was added *because* on Unix you couldn't do the LoadLibrary trick to load without dependencies. That is, it makes no comparison to whether scanning is faster than LoadLibrary. So assume that scanning is faster, especially now that we have memory mapping in QFile (it wasn't there in Qt 4.0). This simplifies greatly the codebase because we no longer need to try to load and later unload the library to check whether it is a Qt plugin or not, nor deal with Windows non-C++ exceptions. Just scan on all platforms. Change-Id: If269e009bfb9920805ca1aa6c2b66aacdd5b26e9 Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* | Add a Mach-O decoder to the QPluginLoaderThiago Macieira2013-07-204-6/+321
|/ | | | | | | | | | | | | | | | | | | | | | | We already had an ELF decoder, which helped us greatly to find the metadata and that catches most Unix systems (Solaris, QNX, HP-UXi, and all of the free Unixes). On other Unix systems, aside from Mac OS X, we simply scanned the entire file for the signature. On Windows, even without a COFF-PE decoder, we use a LoadLibrary trick to load the plugin without loading the dependent libraries. In most cases, that works. Unfortunately, on Mac OS X we didn't have a decoder and nor could we do the file scan: because Mac OS X binaries could be fat binaries, we wouldn't know which architecture's signature we had found. No more. This adds a full Mach-O decoder to QtCore. It is also capable of finding the boundaries of the architecture's binary, but that functionality is disabled since all Qt 5 plugins have plugin metadata sections. Change-Id: I2d5c04c5ecf024864b8a43f31ab6b7e6c5eae9ce Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Merge remote-tracking branch 'origin/release' into stableFrederik Gladhorn2013-06-201-10/+9
|\ | | | | | | Change-Id: I94bb158562ae6b80a87b40139d7302ea7b9b9aa8
| * QFactoryLoader: Release unused libraries.Friedemann Kleint2013-06-181-1/+6
| | | | | | | | | | | | | | Task-number: QTBUG-31476 Change-Id: Ib2eb076afaa21ab1fdc12944f80483e3de260d4b Reviewed-by: Lars Knoll <lars.knoll@digia.com>
| * Remove unused member QFactoryLoaderPrivate::keyList.Friedemann Kleint2013-06-181-9/+3
| | | | | | | | | | | | | | Task-number: QTBUG-31476 Change-Id: Ife9b25ede67837152d94cd500a1d7c6dc6cd8ab8 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* | Print directories for QT_DEBUG_PLUGINSKai Koehne2013-06-051-0/+4
|/ | | | | | | | So far we stayed completely silent if the user forgot to deploy all plugins, or deployed them in the wrong way. Change-Id: Idd776c4b4a2ddffd5da08985e5925248c97e0270 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>