summaryrefslogtreecommitdiffstats
path: root/src/winmain/qtmain_winrt.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Remove winrtOliver Wolff2020-06-061-430/+0
| | | | | | | | | Macros and the await helper function from qfunctions_winrt(_p).h are needed in other Qt modules which use UWP APIs on desktop windows. Task-number: QTBUG-84434 Change-Id: Ice09c11436ad151c17bdccd2c7defadd08c13925 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* qtmain_winrt: Avoid nullptrs in str*cmp which cause crashesOliver Wolff2019-05-171-3/+6
| | | | | | | | | When bringing an application back to foreground, args may contain NULL. These nullptrs should not cause application crashes. Fixes: QTBUG-75843 Change-Id: I642e3c359216e7706bcb13508399999a51a4fc2d Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* qtmain_winrt: Dynamically increase debug message mapping sizeOliver Wolff2018-04-091-6/+38
| | | | | | | | | | | | | | | | If large debug strings are received, the application should not crash, but the file mapping's size should be increased accordingly. To signal the need for a bigger mapping to the client, the new message type was introduced. If winrtrunner receives a message with this type, it will close the file mapping so that a new one can be created. Task-number: QTBUG-61911 Change-Id: I3d5b5770870257a965b80e369975d3869e9a5446 Reviewed-by: Andre de la Rocha <andre.rocha@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Miguel Costa <miguel.costa@qt.io> Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
* qtmain_winrt: Synchronize debug message callsOliver Wolff2018-04-091-0/+4
| | | | | | | | | | | | | | When winrtrunner is used to debug winrt applications, debug messages should be acknowledged by winrtrunner. Otherwise it is possible, that 2 messages are sent (and their event set) before winrtrunner reacted. In this case the first message was lost and the second message shown twice. Change-Id: Ib1c6f87aad0c0da1761be5bf467edf8d4476c5e3 Reviewed-by: Miguel Costa <miguel.costa@qt.io> Reviewed-by: Andre de la Rocha <andre.rocha@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
* qtmain_winrt: Protect debug message handler with mutexOliver Wolff2018-04-091-0/+6
| | | | | | | | | | | The code can be accessed from several threads and thus should be protected. Change-Id: I38c67c5d0f9b1658da1d0ae45d3ea79bbe4e8dff Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Miguel Costa <miguel.costa@qt.io> Reviewed-by: Andre de la Rocha <andre.rocha@qt.io> Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
* qtmain_winrt: Remove unused leftovers from Windows (Phone) 8.1 timesOliver Wolff2018-03-071-15/+2
| | | | | | | | | | | On Windows (Phone) 8.1 __getmainargs was still supported and used to do the initialization of the application's parameters and environment. When that functionality was removed together with the now unsupported OSs,the initial filling of argc, argv, and env part was forgotten. Change-Id: I3b788de317b22b4525427faefc3fe974dac5d9ac Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
* winrt: Add null pointer to the end of the arguments arrayDavid Schulz2018-03-071-1/+3
| | | | | | | | | | | Although WinRT doesn't officially support argc/argv, respect C++03 §3.6.1/2 (The value of argv[argc] shall be 0). Task-number: QTCREATORBUG-19705 Change-Id: I190e2923b8a0665cc8975a800619fd916a4dd244 Reviewed-by: hjk <hjk@qt.io> Reviewed-by: Miguel Costa <miguel.costa@qt.io> Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
* Merge remote-tracking branch 'origin/5.10' into devLiang Qi2018-01-111-3/+7
|\ | | | | | | | | | | | | | | | | Conflicts: src/3rdparty/harfbuzz-ng/src/hb-private.hh src/sql/doc/snippets/code/doc_src_sql-driver.cpp src/sql/doc/src/sql-driver.qdoc Change-Id: I38f0e82fcd37926cbf3c1915e009a731040d4598
| * winrt: Remove -qdevel and -qdebug from command line parametersOliver Wolff2018-01-051-3/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | These options are used by winrtrunner/Qt Creator to control logging and debugging behavior and should not influence applications. Without this change applications that use QCommandLineParser::process have to explicitly remove these values from the arguments list or the application will exit with an "unknown option" error when run from Qt Creator. As winrt applications do not natively support command line arguments, breaking the use case of having these values as valid command line options is acceptable. [ChangeLog][qtmain][winrt] -qdevel and -qdebug are removed from the command line arguments and not passed to the application. Change-Id: I60e5565148fd3dd0155b946607fdf5042139d2e1 Reviewed-by: David Schulz <david.schulz@qt.io> Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
* | Replace Q_DECL_OVERRIDE with override where possibleKevin Funk2017-09-191-9/+9
|/ | | | | | | | | | | | | | | | Remaining uses of Q_DECL_OVERRIDE are in: src/corelib/global/qcompilerdetection.h src/corelib/global/qglobal.cpp doc/global/qt-cpp-defines.qdocconf (definition and documentation of Q_DECL_OVERRIDE) tests/manual/qcursor/qcursorhighdpi/main.cpp (a test executable compilable both under Qt4 and Qt5) Change-Id: Ib9b05d829add69e98a86238274b6a1fcb19b49ba Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io> Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* Remove support for WinRT 8.1 and Windows Phone 8.1Maurice Kalinowski2017-01-181-25/+1
| | | | | | | | [ChangeLog][QtBase][General] Removed support for WinRT/Windows Phone 8.1. Task-number: QTBUG-57288 Change-Id: Ifd6d6780cbbdb710d99556ba3d2fb2e514d4f789 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* winrt: Check for sanity of variables in debug buildMaurice Kalinowski2016-11-161-0/+6
| | | | | | | Identified as potential issues by analyze mode. Change-Id: I3f7c63a2349f29cc3de7baa78157fec157b9e561 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* winrt: Fix file dialog handling for Windows PhoneMaurice Kalinowski2016-09-061-0/+8
| | | | | | | | | | | | | | Windows Phone needs to use activation targets to properly handle the return value of a file dialog. 0f9ca217d0f479756e50459473cad7371f29047c introduced launching an app via different modes, but broke above use- case for Windows Phone. Hence, we first check if a dispatcher exists and use this one to forward the activation. Task-number: QTBUG-54342 Change-Id: If9dd2df9a45e9aa104775530c695325fe6f684f2 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Use QStringLiteral more judiciouslyAnton Kudryavtsev2016-07-081-1/+1
| | | | | | | | | | | | | | | Replace it with QL1S in QStringBuilder expressions and in overloaded functions. Replace patterns 'QString::number() + QStringLiteral' and 'QStringLiteral + QString::number()' with QString::asprintf. Saves some text size. Change-Id: Ib39b2332264dfc3df04e77f2c101b47a1030cef4 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* winmain: port the last remaining Q_FOREACH loop and add QT_NO_FOREACHMarc Mutz2016-05-121-1/+1
| | | | | | | | | | Port the last remaining Q_FOREACH (over a QVarLengthArray, no less) in winmain to C++11 range-for and mark the library as Q_FOREACH-free, using QT_NO_FOREACH. Change-Id: Ic561080f7dd61d1d853ceb9e211c9b8a23bf05a5 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
* Merge remote-tracking branch 'origin/5.6' into 5.7Liang Qi2016-04-251-9/+38
|\ | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: config.tests/unix/compile.test configure src/android/jar/src/org/qtproject/qt5/android/QtMessageDialogHelper.java src/corelib/global/qglobal.cpp src/widgets/kernel/qapplication.cpp src/widgets/styles/qwindowsvistastyle.cpp tests/auto/corelib/kernel/qobject/tst_qobject.cpp Change-Id: I067083f34e5290aa5f7565e40c30a069cc37b83a
| * winrt: support additional activation modesMaurice Kalinowski2016-04-131-9/+38
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Besides launching a WinRT application it can also be activated, for instance via an uri protocol, as a share target or file open event. In those cases we need to resume the main thread, which only happened for regular launches so far. In addition we create and post an activation event, which can be caught from the user application. However this requires a QCoreApplication object to be created from the main thread, hence try to query the eventdispatcher with a timeout. Task-number: QTBUG-49276 Change-Id: I4ceca59dd3b062d9a5e49d1ad80334360aafbd6f Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
* | Unify license header usage.Jani Heikkinen2016-03-291-3/+13
|/ | | | | | | | | Update files using old header.LGPL3 to header.LGPL Update files using old FDL template to use new one Update files using old BSD template to use new one Change-Id: I36a78272516f9953d02956522f285b40adfc8915 Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
* winrt: handle PrelaunchActivated property to pass certificationMaurice Kalinowski2016-01-051-0/+9
| | | | | | | | | | | | | | | | Windows 10 requires apps to handle the PrelaunchActivated property. This enables a faster startup by launching an app and immediately suspending it. This happens by the system and at the time the user launches the app no library loading or initialization is required. By default we opt-out of this and return early. The reason is that we cannot know the type of application written in Qt and whether it breaks the guidelines by using prelaunch. For further details check here: https://msdn.microsoft.com/en-us/library/windows/apps/mt593297.aspx Task-number: QTBUG-50292 Change-Id: I4d0b0b95a03f93b99211d042895404a88ea7cb9d Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
* remove visual studio specific argumentMaurice Kalinowski2015-12-141-0/+3
| | | | | | | | | | "-ServerName:" is only used for Visual Studio and causes bad side- effects when using QCommandLineParser. Change-Id: Ifef652bbb65df9279a39ae3c74ddbb563c87bd90 Reviewed-by: David Faure <david.faure@kdab.com> Reviewed-by: Andrew Knight <andrew.knight@intopalo.com> Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
* winrt: Readd parameters to the pid-file's CreateFile2 callOliver Wolff2015-12-111-1/+1
| | | | | | | | Recent changes to the main file accidently removed the parameter from the call. Change-Id: I4cce48327d43d9ea3fe4fd82c2f5768aa4bc6d5c Reviewed-by: Andrew Knight <andrew.knight@intopalo.com>
* winrt: Store exit code in pid fileMaurice Kalinowski2015-12-091-4/+13
| | | | | | | | | | | | | | | We have to call Exit() to successfully close an application as done in 25dcc90d799fba3e3f0391783ed07cb22cd1115a. Unfortunately Exit() always sets the exit code to 1 and this cannot be changed programmatically. Hence write the exit code into the pid file which is created when launched via winrtrunner. winrtrunner then fetches the content and passes the exit code to its callee. This implies that the pidFile is not deleted by the app itself anymore. Task-number: QTBUG-38654 Change-Id: Ib9b6ae4a0d61c9bf7e530e984aae3ad6204c39a0 Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
* winrt: Exit application properlyMaurice Kalinowski2015-10-301-1/+3
| | | | | | | | | | After returning from main() it is not sufficient to exit the main thread, it also needs to be ensured that the Xaml::IApplication object gets notified by invoking Exit. Task-number: QTBUG-49141 Change-Id: I8ca434be5f17ddddd465ede2a79585c28c51b3ef Reviewed-by: Andrew Knight <andrew.knight@intopalo.com>
* winrt: Wait for main thread to exit before exit.Samuel Nevala2015-10-161-0/+1
| | | | | | | | | This will allow application main to go out of scope and free objects allocated there. Change-Id: I7b7199ecf67afe578bac043f16b064c9daaae04a Task-Id: QTBUG-48760 Reviewed-by: Andrew Knight <andrew.knight@intopalo.com>
* winrt: Add support for native pickers for Windows Phone.Samuel Nevala2015-09-071-1/+23
| | | | | | | | | Support picking file(s), folder and save file via native component on Windows Phone. Task-Id: QTBUG-44833 Change-Id: Ibffc1cf3c133c9fbf9c92e0a4f874c4e197c50ee Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
* winrtmain: Start in XAML modeAndrew Knight2015-08-131-115/+148
| | | | | | | | This allows the platform plugin to start using XAML interfaces in the windowing system. Change-Id: Ifcd29b8b8d83b138af69786dfc6a1adec21be37e Reviewed-by: Maurice Kalinowski <maurice.kalinowski@theqtcompany.com>
* Use qthread_win.cpp for WinRT as wellOliver Wolff2015-06-231-4/+0
| | | | | | | | | | Since of Windows (Phone) 8.1 most of the desktop's thread functionality is also available, so we might be able to share the code and get rid of the extra implementation for WinRT. Task-number: QTBUG-43837 Change-Id: I0ce907cd94899834527f88c70e1e395bafdb14b3 Reviewed-by: Maurice Kalinowski <maurice.kalinowski@theqtcompany.com>
* WinRT: Fix argument handling on Windows 10Maurice Kalinowski2015-06-011-0/+38
| | | | | | | | | | | The Windows 10 CRT does not export __getmainargs(), so we need to move to GetCommandLine like on WinCE and desktop Windows. As CommandLineToArgv is not available, the command line is split according by spaces, allowing for quotes (and quote escaping) around arguments. Change-Id: Ibc969df94ca5423a3a71d8190bbacd201189ea19 Reviewed-by: Andrew Knight <andrew.knight@intopalo.com> Reviewed-by: Maurice Kalinowski <maurice.kalinowski@theqtcompany.com>
* Updated BSD licensed file headersJani Heikkinen2015-02-151-3/+3
| | | | | Change-Id: I6441ff931dbd33b698d762e6f6784898f3f60fe7 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
* Update copyright headersJani Heikkinen2015-02-111-5/+5
| | | | | | | | | | | | | | | | | | 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>
* winrt: Use native threadingAndrew Knight2014-06-251-0/+4
| | | | | | | | | | | | | | | | | Instead of using std::thread, use the WinRT ThreadPool to manage threads. This allows for setting the scheduling priority, and provides a path to enable XAML integration (which requires Qt run on a background thread). QThread::terminate() is still unsupported, and only the winmain thread can be adopted due to the behavior of the thread pool when creating tasks from the GUI thread. The associated tests are now skipped, and all other QThread tests pass. Task-number: QTBUG-31397 Change-Id: Ib512a328412e1dffecdc836bc39de3ccd37afa13 Reviewed-by: Oliver Wolff <oliver.wolff@digia.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* remove HSTRING instancesMaurice Kalinowski2014-06-031-4/+5
| | | | | | | | | | | HSTRING needs to be released or handles will be leaked. Instead use HString which takes care of resource management on its own. Task-Number: QTBUG-38115 Change-Id: I2c767776c1f22f45acd8dd77b693f30d63d894b9 Reviewed-by: Andrew Knight <andrew.knight@digia.com> Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
* WinRT winmain: Pass ImagePath as part of ImageParams in Xap packagesAndrew Knight2014-04-011-2/+17
| | | | | | | | | ImageParams is used to pass arguments to main(), but when used the original argv[0] is dropped. To remedy this, expect argv[1] to contain the same value found in the Xap's ImagePath. Change-Id: I2fb3b9956304fdcdeec4424ea56289d56ad4fe0b Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
* WinRT: Add debug message handler for winrtrunnerAndrew Knight2014-03-141-0/+25
| | | | | | | | | | By placing debug messages in shared memory, the application can share debug messages with winrtrunner (or any utility which passes -qdevel to the app and opens the corresponding shared memory area). Task-number: QTBUG-37308 Change-Id: Id0e04cfd5f0f701d552a448f780788c7cbf9b438 Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
* WinRT winmain: handle -qdevel parameter for additional debugging toolingAndrew Knight2014-01-301-5/+24
| | | | | | | | | | | This adds an additional command line argument, -qdevel, for tooling support. Since Windows Phone deployment APIs don't return the PID, this writes the PID to a lock file that can be read by deployment tools. Since arguments may be passed from one of several entry points, the special argument checks are now done in Run() instead of onActivated(). Change-Id: Ib3af157ccf687769d43d60adef9a0ab480e835b7 Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
* WinRT winmain: fix linker error on x86 compilersAndrew Knight2014-01-131-1/+1
| | | | | | | | The x86 PC and Phone emulator compilers choke on WinMain's signature not matching the stdcall exported version. This fixes the issue. Change-Id: I30d8a5dab67f3f1f15869abe2928326e3401dc43 Reviewed-by: Maurice Kalinowski <maurice.kalinowski@digia.com>
* WinRT: Properly return exit codeAndrew Knight2014-01-071-2/+6
| | | | | | | | | Instead of returning the HRESULT of the Run method, return the actual exit code of the application. Change-Id: I1e3d654ecdb4c319d4a08fe8a11e8699d186f66b Reviewed-by: Oliver Wolff <oliver.wolff@digia.com> Reviewed-by: Maurice Kalinowski <maurice.kalinowski@digia.com>
* Change entry point for WinRT apps to WinMainMaurice Kalinowski2014-01-061-15/+37
| | | | | | | | | | | | | | | | | | | | | | | | | | Using wmain causes the problem that the linker seems to create some code around it, which calls ExitProcess. That function however is forbidden by the Windows Store Certification process and hence you cannot publish an application currently. This does not apply to Windows Phone, which links in such a way that this problem does not occur there. With WinMain as the entry point this does not happen and also is the default entry point. Testing locally shows that certification goes fine. Since it does not pass the full command line string, the C-runtime method __getmainargs is used instead. This also gives access to any environment strings which may be passed. Note that MSDN states that this function should only be used for desktop applications. For XAML/C++ scenarios there is no entry function at all, but rather the App object gets instantiated in the default template. But this only works for XAML itself and not for plain C++ applications, probably some other entry wrapper is created on the fly here. Done-with: Andrew Knight <andrew.knight@digia.com> Change-Id: I8a118eddf6cfeddeca7d676267e979af17123e02 Reviewed-by: Maurice Kalinowski <maurice.kalinowski@digia.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
* Avoid adding empty argumentsMaurice Kalinowski2013-11-011-5/+7
| | | | | | | | QByteArray split does create one item even if the string is empty. Hence check if the launch arguments string needs to be parsed at all. Change-Id: I0a355212aaa7254fe0f417c61a59c30223311915 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* WinRT winmain: enable debugger waitingAndrew Knight2013-10-041-1/+9
| | | | | | | | | | | | WinRT applications are not invoked directly, so a debugger may attach too late to be useful. While the application can be launched with a debugging server, attaching directly to the running process is simpler and less resource-intensive. For this reason, it is useful for applications to wait for the direct debugger to attach. If the existing -qdebug parameter is passed to the application, wait idly until the debugger attaches. Change-Id: I7b4957beb9728ab6311b459e4d809dc5f4767780 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* winmain for winrtAndrew Knight2013-09-141-0/+150
WinRT passes the executable and Appx server info to the CRT main, and supports several additional activation arguments as well. This handles the arguments passed to main as well as the case where a modern app is launched from an external application (e.g. Qt Creator). Task-number: QTBUG-30198 Change-Id: Ia843e98c7843d5705f5f6d1c809de0b6bcdb5d26 Done-with: Kamil Trzcinski Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>