Я представил вопрос на странице gittub GPUImage
, но думал, что увижу, есть ли у кого-нибудь здесь обходной путь или лучшее представление о причине проблемы.GPUImageView висит на presentFrameBuffer при подключении OpenGL Profiler
У меня есть GPUImageView
, поданный GPUImageRawDataInput
в приложении OS X. Если я присоединяю OpenGL Profiler
и включаю трассировку во время обновления, обработка застревает в [NSOpenGLContext flushBuffer]
(в частности, в __psynch_mutexwait
). Для простого теста, у меня только есть контроллер представления с кнопкой и настраиваемым представлением класса GPUImageView
и следующий код в контроллере:
-(void)awakeFromNib{
[super awakeFromNib];
NSString *fname = [[NSBundle mainBundle] pathForResource:@"TestImage" ofType:@"dat"];
NSError *err = nil;
if(!fname){
err = [NSError errorWithDomain:@"ViewController" code:0
userInfo:@{NSLocalizedFailureReasonErrorKey:@"No selected data file!"}];
}else{
_rawDataFromFile = [NSData dataWithContentsOfFile:fname
options:NSDataReadingMappedIfSafe | NSDataReadingUncached
error:&err];
}
if(err){
[self presentError:err];
return;
}
[self.imageView setFillMode:kGPUImageFillModePreserveAspectRatio];
[self.imageView setBackgroundColorRed:0.0 green:0.0 blue:0.0 alpha:1.0];
GLubyte* data = (GLubyte *)[self.rawDataFromFile bytes];
_inputFilter = [[GPUImageRawDataInput alloc] initWithBytes:data
size:CGSizeMake(1024, 241)
pixelFormat:GPUPixelFormatLuminance
type:GPUPixelTypeUByte];
[self.inputFilter addTarget:self.imageView];
}
- (IBAction)updateAction:(id)sender {
if (_inputFilter) {
[self.inputFilter useNextFrameForImageCapture];
[self.inputFilter processData];
}
}
Любые идеи, почему это может зависнуть только тогда, когда профайлер является прилагается? Благодаря!
Я работаю в середине 2012 года macbook pro, OS X 10.11.4.