summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/ios/qioseventdispatcher.mm
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/platforms/ios/qioseventdispatcher.mm')
-rw-r--r--src/plugins/platforms/ios/qioseventdispatcher.mm18
1 files changed, 15 insertions, 3 deletions
diff --git a/src/plugins/platforms/ios/qioseventdispatcher.mm b/src/plugins/platforms/ios/qioseventdispatcher.mm
index f7df792362..3dd9c7ad9f 100644
--- a/src/plugins/platforms/ios/qioseventdispatcher.mm
+++ b/src/plugins/platforms/ios/qioseventdispatcher.mm
@@ -213,7 +213,7 @@ static int infoPlistValue(NSString* key, int defaultValue)
return value ? [value intValue] : defaultValue;
}
-extern "C" int qtmn(int argc, char *argv[])
+extern "C" int __attribute__((weak)) main(int argc, char *argv[])
{
@autoreleasepool {
size_t defaultStackSize = 512 * kBytesPerKiloByte; // Same as secondary threads
@@ -248,7 +248,18 @@ enum SetJumpResult
kJumpedFromUserMainTrampoline,
};
-extern "C" int main(int argc, char *argv[]);
+// We define qt_main so that user_main_trampoline() will not cause
+// missing symbols in the case of hybrid applications that don't
+// user our main wrapper. Since the symbol is weak, it will not
+// get used or cause a clash in the normal Qt application usecase,
+// where we rename main to qt_main.
+extern "C" int __attribute__((weak)) qt_main(int argc, char *argv[])
+{
+ Q_UNUSED(argc);
+ Q_UNUSED(argv);
+
+ Q_UNREACHABLE();
+}
static void __attribute__((noinline, noreturn)) user_main_trampoline()
{
@@ -261,7 +272,7 @@ static void __attribute__((noinline, noreturn)) user_main_trampoline()
strcpy(argv[i], [arg cStringUsingEncoding:[NSString defaultCStringEncoding]]);
}
- int exitCode = main(argc, argv);
+ int exitCode = qt_main(argc, argv);
delete[] argv;
qEventDispatcherDebug() << "Returned from main with exit code " << exitCode;
@@ -496,6 +507,7 @@ void QIOSEventDispatcher::checkIfEventLoopShouldExit()
void QIOSEventDispatcher::handleRunLoopExit(CFRunLoopActivity activity)
{
+ Q_UNUSED(activity);
Q_ASSERT(activity == kCFRunLoopExit);
m_runLoopExitObserver.removeFromMode(kCFRunLoopCommonModes);