aboutsummaryrefslogtreecommitdiff
path: root/backends/platform/ios7/ios7_video.mm
diff options
context:
space:
mode:
Diffstat (limited to 'backends/platform/ios7/ios7_video.mm')
-rw-r--r--backends/platform/ios7/ios7_video.mm19
1 files changed, 17 insertions, 2 deletions
diff --git a/backends/platform/ios7/ios7_video.mm b/backends/platform/ios7/ios7_video.mm
index 5baa83e8e8..85a4dc91d8 100644
--- a/backends/platform/ios7/ios7_video.mm
+++ b/backends/platform/ios7/ios7_video.mm
@@ -55,16 +55,31 @@ bool iOS7_isBigDevice() {
return UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad;
}
+static inline void execute_on_main_thread(void (^block)(void)) {
+ if ([NSThread currentThread] == [NSThread mainThread]) {
+ block();
+ }
+ else {
+ dispatch_sync(dispatch_get_main_queue(), block);
+ }
+}
+
void iOS7_updateScreen() {
//printf("Mouse: (%i, %i)\n", mouseX, mouseY);
if (!g_needsScreenUpdate) {
g_needsScreenUpdate = 1;
- [[iOS7AppDelegate iPhoneView] performSelectorOnMainThread:@selector(updateSurface) withObject:nil waitUntilDone: NO];
+ execute_on_main_thread(^{
+ [[iOS7AppDelegate iPhoneView] updateSurface];
+ });
}
}
bool iOS7_fetchEvent(InternalEvent *event) {
- return [[iOS7AppDelegate iPhoneView] fetchEvent:event];
+ __block bool fetched;
+ execute_on_main_thread(^{
+ fetched = [[iOS7AppDelegate iPhoneView] fetchEvent:event];
+ });
+ return fetched;
}
uint getSizeNextPOT(uint size) {