mirror of
https://github.com/opencv/opencv.git
synced 2024-11-28 13:10:12 +08:00
allow QtKit capture in secondary threads
[NSRunLoop currentRunLoop] is not the same as in the main thread. see https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/F oundation/Classes/nsrunloop_Class/Reference/Reference.html "If no input sources or timers are attached to the run loop, this method exits immediately" The old code caused grabFrame() to return immediately if the capture was not done in the main thread. This code works correctly, even in secondary threads, provided that all capture functions are called in the *same* thread
This commit is contained in:
parent
6bf8f474fa
commit
b524e275c1
@ -277,11 +277,8 @@ bool CvCaptureCAM::grabFrame(double timeOut) {
|
||||
double sleepTime = 0.005;
|
||||
double total = 0;
|
||||
|
||||
NSDate *loopUntil = [NSDate dateWithTimeIntervalSinceNow:sleepTime];
|
||||
while (![capture updateImage] && (total += sleepTime)<=timeOut &&
|
||||
[[NSRunLoop currentRunLoop] runMode: NSDefaultRunLoopMode
|
||||
beforeDate:loopUntil])
|
||||
loopUntil = [NSDate dateWithTimeIntervalSinceNow:sleepTime];
|
||||
while (![capture updateImage] && (total += sleepTime)<=timeOut)
|
||||
usleep((int)(sleepTime*1000));
|
||||
|
||||
[localpool drain];
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user