Commit cdd8da99 authored by Pierre d'Herbemont's avatar Pierre d'Herbemont

MacOSX/Framework/VLCEventManager.m: Directly issue events to main thread if we...

MacOSX/Framework/VLCEventManager.m: Directly issue events to main thread if we are called from main thread.
parent d8dc26ec
......@@ -98,9 +98,9 @@ static void * EventDispatcherMainLoop(void * user_data)
pthread_mutex_unlock( [self queueLock] );
if( message->type == VLCNotification )
[self performSelectorOnMainThread:@selector(callDelegateOfObjectAndSendNotificationWithArgs:) withObject:[dataMessage retain] waitUntilDone: NO];
[self performSelectorOnMainThread:@selector(callDelegateOfObjectAndSendNotificationWithArgs:) withObject:[dataMessage retain] /* released in the call */ waitUntilDone: NO];
else
[self performSelectorOnMainThread:@selector(callObjectMethodWithArgs:) withObject:[dataMessage retain] waitUntilDone: NO];
[self performSelectorOnMainThread:@selector(callObjectMethodWithArgs:) withObject:[dataMessage retain] /* released in the call */ waitUntilDone: NO];
pthread_mutex_lock( [self queueLock] );
[[self messageQueue] removeLastObject];
......@@ -156,6 +156,12 @@ static void * EventDispatcherMainLoop(void * user_data)
VLCNotification
};
if([NSThread isMainThread])
{
[self callDelegateOfObjectAndSendNotificationWithArgs:[[NSData dataWithBytes:&message length:sizeof(struct message)] retain] /* released in the call */];
return;
}
pthread_mutex_lock( [self queueLock] );
[[self messageQueue] insertObject:[NSData dataWithBytes:&message length:sizeof(struct message)] atIndex:0];
pthread_cond_signal( [self signalData] );
......@@ -167,7 +173,6 @@ static void * EventDispatcherMainLoop(void * user_data)
- (void)callOnMainThreadObject:(id)aTarget withMethod:(SEL)aSelector withArgumentAsObject: (id)arg
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
struct message message =
{
[aTarget retain],
......@@ -176,6 +181,12 @@ static void * EventDispatcherMainLoop(void * user_data)
VLCObjectMethodWithObjectArg
};
if([NSThread isMainThread])
{
[self callObjectMethodWithArgs:[[NSData dataWithBytes:&message length:sizeof(struct message)] retain] /* released in the call */];
return;
}
pthread_mutex_lock( [self queueLock] );
[[self messageQueue] insertObject:[NSData dataWithBytes:&message length:sizeof(struct message)] atIndex:0];
pthread_cond_signal( [self signalData] );
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment