Ich habe ein Problem auf der GPUImage
Github-Seite eingereicht, aber ich dachte, ich würde sehen, wenn jemand hier eine Umgehungsmöglichkeit oder eine bessere Vorstellung von der Ursache des Problems hat.GPUImageView hängt am presentFrameBuffer, wenn OpenGL Profiler angeschlossen
Ich habe eine GPUImageView
von GPUImageRawDataInput
in einer OS X-Anwendung gefüttert. Wenn ich OpenGL Profiler
anschließe und die Verfolgung während der Aktualisierung aktiviere, wird die Verarbeitung in [NSOpenGLContext flushBuffer]
(speziell in __psynch_mutexwait
) blockiert. Für einen einfachen Testfall, ich habe nur einen View-Controller mit einem Knopf und benutzerdefinierter Ansicht der Klasse GPUImageView
und den folgenden Code in der Steuerung:
-(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];
}
}
Irgendwelche Ideen, warum dies nur hängen könnte, wenn der Profiler ist angebracht? Vielen Dank!
Ich bin auf einem Mitte 2012 Macbook Pro, OS X 10.11.4 ausgeführt.