diff --git a/CapturePlugins/CSLayoutCapturePlugin/CSLayoutCapturePlugin/CSLayoutCapture.m b/CapturePlugins/CSLayoutCapturePlugin/CSLayoutCapturePlugin/CSLayoutCapture.m index e14aa324..a0d71e1a 100644 --- a/CapturePlugins/CSLayoutCapturePlugin/CSLayoutCapturePlugin/CSLayoutCapture.m +++ b/CapturePlugins/CSLayoutCapturePlugin/CSLayoutCapturePlugin/CSLayoutCapture.m @@ -92,21 +92,24 @@ } } -/* -(void)layoutDeleted:(NSNotification *)notification { NSObject *deletedLayout = [notification object]; - if (self.activeVideoDevice && (self.activeVideoDevice.captureDevice == deletedLayout) && _current_renderer) + if (self.activeVideoDevice && (self.activeVideoDevice.captureDevice == deletedLayout) && _current_layout) { @synchronized(self) { - [_current_renderer setValue:nil forKey:@"layout"]; - _current_renderer = nil; + if (_out_dest) + { + _out_dest.active = NO; + } + _out_dest = nil; + _current_layout = nil; + self.activeVideoDevice = nil; } } } -*/ +(NSObject *)createSourceFromPasteboardItem:(NSPasteboardItem *)item { @@ -351,6 +354,7 @@ NSArray *pcmSamples = frameData.pcmAudioSamples[audioTrackkey]; for (id object in pcmSamples) { + CMSampleBufferRef sampleBuffer = (__bridge CMSampleBufferRef)object; CSPcmPlayer *pcmPlayer = _pcmPlayers[audioTrackkey]; if (!pcmPlayer) @@ -431,7 +435,5 @@ } --(void)dealloc -{ -} + @end diff --git a/CapturePlugins/CSSyphonCapturePlugin/CSSyphonCapturePlugin/CSSyphonInjectCapture.h b/CapturePlugins/CSSyphonCapturePlugin/CSSyphonCapturePlugin/CSSyphonInjectCapture.h index 6183149c..2b52b7c1 100644 --- a/CapturePlugins/CSSyphonCapturePlugin/CSSyphonCapturePlugin/CSSyphonInjectCapture.h +++ b/CapturePlugins/CSSyphonCapturePlugin/CSSyphonCapturePlugin/CSSyphonInjectCapture.h @@ -15,6 +15,7 @@ @property (strong) NSString *injectedAppName; @property (strong) SBApplication *injectSB; +@property (strong) NSString *lastAppID; -(void)changeBuffer; diff --git a/CapturePlugins/CSSyphonCapturePlugin/CSSyphonCapturePlugin/CSSyphonInjectCapture.m b/CapturePlugins/CSSyphonCapturePlugin/CSSyphonCapturePlugin/CSSyphonInjectCapture.m index 46b0ee0d..3d8b066c 100644 --- a/CapturePlugins/CSSyphonCapturePlugin/CSSyphonCapturePlugin/CSSyphonInjectCapture.m +++ b/CapturePlugins/CSSyphonCapturePlugin/CSSyphonCapturePlugin/CSSyphonInjectCapture.m @@ -20,6 +20,19 @@ +-(void)saveWithCoder:(NSCoder *)aCoder +{ + [super saveWithCoder:aCoder]; + [aCoder encodeObject:self.lastAppID forKey:@"lastAppID"]; +} + +-(void)restoreWithCoder:(NSCoder *)aDecoder +{ + [super restoreWithCoder:aDecoder]; + self.lastAppID = [aDecoder decodeObjectForKey:@"lastAppID"]; +} + + -(bool) isSyphonInjectInstalled { @@ -83,6 +96,13 @@ _activeVideoDevice = activeVideoDevice; [self changeAvailableVideoDevices]; + if (!_activeVideoDevice) + { + return; + } + + self.lastAppID = _activeVideoDevice.uniqueID; + NSString *appExecutablePath = activeVideoDevice.uniqueID; NSRunningApplication *injectApp; @@ -123,6 +143,12 @@ NSMutableArray *retArr = [[NSMutableArray alloc] init]; + NSString *useUniqueID = self.savedUniqueID; + if (!useUniqueID) + { + useUniqueID = self.lastAppID; + } + for(NSRunningApplication *app in applications) { CSAbstractCaptureDevice *newDev; @@ -133,10 +159,10 @@ bool appMatch = NO; - if ([newDev.uniqueID isEqualToString:self.savedUniqueID]) + if ([newDev.uniqueID isEqualToString:useUniqueID]) { appMatch = YES; - } else if ([app.executableURL.lastPathComponent isEqualToString:self.savedUniqueID.lastPathComponent]) { + } else if ([app.executableURL.lastPathComponent isEqualToString:useUniqueID]) { appMatch = YES; } if (!self.activeVideoDevice && appMatch) diff --git a/CocoaSplit/AVFAudioCapture.m b/CocoaSplit/AVFAudioCapture.m index bf594d69..897edc4c 100644 --- a/CocoaSplit/AVFAudioCapture.m +++ b/CocoaSplit/AVFAudioCapture.m @@ -57,12 +57,15 @@ -(void)dealloc { + NSLog(@"DEALLOC AUDIO"); if (_audio_capture_output) { [_audio_capture_output setSampleBufferDelegate:nil queue:NULL]; } if (_capture_session) { + [_capture_session stopRunning]; + for(AVCaptureInput *inp in _capture_session.inputs) { [_capture_session removeInput:inp]; @@ -73,7 +76,6 @@ [_capture_session removeOutput:outp]; } - [_capture_session stopRunning]; } _audio_capture_output = nil; _audio_capture_input = nil; diff --git a/CocoaSplit/CAMultiAudio/CAMultiAudioAVCapturePlayer.m b/CocoaSplit/CAMultiAudio/CAMultiAudioAVCapturePlayer.m index 97252ec3..9625bd52 100644 --- a/CocoaSplit/CAMultiAudio/CAMultiAudioAVCapturePlayer.m +++ b/CocoaSplit/CAMultiAudio/CAMultiAudioAVCapturePlayer.m @@ -73,10 +73,15 @@ -(void)attachCaptureSession { - AVFAudioCapture *newAC = [[AVFAudioCapture alloc] initForAudioEngine:self.captureDevice sampleRate:self.sampleRate]; - self.avfCapture = newAC; - newAC.multiInput = self; - [newAC startCaptureSession:nil]; + if (!self.avfCapture) + { + AVFAudioCapture *newAC = [[AVFAudioCapture alloc] initForAudioEngine:self.captureDevice sampleRate:self.sampleRate]; + self.avfCapture = newAC; //return; + } + + + self.avfCapture.multiInput = self; + [self.avfCapture startCaptureSession:nil]; } diff --git a/CocoaSplit/CAMultiAudio/CAMultiAudioEngine.m b/CocoaSplit/CAMultiAudio/CAMultiAudioEngine.m index 3fc0d225..e975da2b 100644 --- a/CocoaSplit/CAMultiAudio/CAMultiAudioEngine.m +++ b/CocoaSplit/CAMultiAudio/CAMultiAudioEngine.m @@ -746,7 +746,7 @@ OSStatus encoderRenderCallback( void *inRefCon, AudioUnitRenderActionFlags *ioAc AudioObjectAddPropertyListenerBlock(kAudioObjectSystemObject, &inputDeviceAddress, dispatch_get_main_queue(), ^(UInt32 inNumberAddresses, const AudioObjectPropertyAddress * _Nonnull inAddresses) { CAMultiAudioEngine *strongSelf = weakSelf; - if (strongSelf->_defaultInput) + if (strongSelf && strongSelf->_defaultInput) { [strongSelf attachDefaultInput]; } @@ -916,6 +916,7 @@ OSStatus encoderRenderCallback( void *inRefCon, AudioUnitRenderActionFlags *ioAc } -(void)handleDeviceConnect:(NSNotification *)notification { + /* AVCaptureDevice *newDev = notification.object; if ([newDev hasMediaType:AVMediaTypeAudio]) @@ -937,6 +938,7 @@ OSStatus encoderRenderCallback( void *inRefCon, AudioUnitRenderActionFlags *ioAc [self attachInput:avplayer]; } } + */ } diff --git a/CocoaSplit/CSInputLibraryItem.m b/CocoaSplit/CSInputLibraryItem.m index d3957a9f..1450c39c 100644 --- a/CocoaSplit/CSInputLibraryItem.m +++ b/CocoaSplit/CSInputLibraryItem.m @@ -25,7 +25,7 @@ NSImage *thumb = [[NSImage alloc] initWithSize:NSMakeSize(32, 32)]; NSRect fromRect = NSMakeRect(0, 0, img.size.width, img.size.height); [thumb lockFocus]; - [img drawInRect:NSMakeRect(0, 0, 32, 32) fromRect:fromRect operation:NSCompositeCopy fraction:1.0f]; + [img drawInRect:NSMakeRect(0, 0, 32, 32) fromRect:fromRect operation:NSCompositingOperationCopy fraction:1.0f]; [thumb unlockFocus]; self.inputImage = thumb; } diff --git a/CocoaSplit/CSLayoutButton.m b/CocoaSplit/CSLayoutButton.m index 6964feac..31af4d3f 100644 --- a/CocoaSplit/CSLayoutButton.m +++ b/CocoaSplit/CSLayoutButton.m @@ -63,7 +63,7 @@ //fillBox.size.width = fillBox.size.width/2; - NSRectFillUsingOperation(fillBox, NSCompositeSourceOver); + NSRectFillUsingOperation(fillBox, NSCompositingOperationSourceOver); } if (myLayout.in_live) @@ -75,7 +75,7 @@ fillBox.size.width = fillBox.size.width/2; fillBox.origin.x = fillBox.origin.x + fillBox.size.width; - NSRectFillUsingOperation(fillBox, NSCompositeSourceOver); + NSRectFillUsingOperation(fillBox, NSCompositingOperationSourceOver); } diff --git a/CocoaSplit/CSLayoutRecorder.m b/CocoaSplit/CSLayoutRecorder.m index 61921716..f4af8e7d 100644 --- a/CocoaSplit/CSLayoutRecorder.m +++ b/CocoaSplit/CSLayoutRecorder.m @@ -422,7 +422,6 @@ startTime += 1.0/self.layout.frameRate; - double start_time = [CaptureController.sharedCaptureController mach_time_seconds]; if (![[CaptureController sharedCaptureController] sleepUntil:startTime]) { NSLog(@"SLEEP UNTIL %f CURRENT TIME %f LAYOUT %@ %@", startTime, [[CaptureController sharedCaptureController] mach_time_seconds], self.layout.name, NSThread.currentThread); @@ -434,15 +433,16 @@ if (!self.recordingActive) { - for (OutputDestination *outdest in self.outputs) + NSMutableDictionary *useCompressors = self.compressors.copy; + + for(id cKey in useCompressors) { - if (outdest.buffer_draining) - { - drain_cnt++; - } - [outdest writeEncodedData:nil]; + + id compressor; + compressor = useCompressors[cKey]; + drain_cnt += [compressor drainOutputBufferFrame]; } - + if (!drain_cnt) { return; diff --git a/CocoaSplit/CSNSImageCellThemed.m b/CocoaSplit/CSNSImageCellThemed.m index 444126cf..e73006de 100644 --- a/CocoaSplit/CSNSImageCellThemed.m +++ b/CocoaSplit/CSNSImageCellThemed.m @@ -33,6 +33,6 @@ myimage = [self.image tintedImageWithColor:NSColor.blackColor]; } - [myimage drawInRect:cellFrame fromRect:NSMakeRect(0, 0, myimage.size.width, myimage.size.height) operation:NSCompositeSourceOver fraction:1.0 respectFlipped:YES hints:nil]; + [myimage drawInRect:cellFrame fromRect:NSMakeRect(0, 0, myimage.size.width, myimage.size.height) operation:NSCompositingOperationSourceOver fraction:1.0 respectFlipped:YES hints:nil]; } @end diff --git a/CocoaSplit/CSOauth2Authenticator.m b/CocoaSplit/CSOauth2Authenticator.m index 0cedbaaf..e8662e37 100644 --- a/CocoaSplit/CSOauth2Authenticator.m +++ b/CocoaSplit/CSOauth2Authenticator.m @@ -323,7 +323,7 @@ NSString *const kCSOauth2ClientSecret = @"CSOauth2ClientSecret"; _authWebView = [[WebView alloc] initWithFrame:winFrame frameName:nil groupName:nil]; _authWebView.policyDelegate = self; - _authWindow = [[NSWindow alloc] initWithContentRect:winFrame styleMask:NSTitledWindowMask|NSClosableWindowMask|NSMiniaturizableWindowMask|NSResizableWindowMask backing:NSBackingStoreBuffered defer:NO]; + _authWindow = [[NSWindow alloc] initWithContentRect:winFrame styleMask:NSWindowStyleMaskTitled|NSWindowStyleMaskClosable|NSWindowStyleMaskMiniaturizable|NSWindowStyleMaskResizable backing:NSBackingStoreBuffered defer:NO]; [_authWindow center]; [_authWindow setContentView:_authWebView]; diff --git a/CocoaSplit/CSPreviewOverlayView.m b/CocoaSplit/CSPreviewOverlayView.m index d7dc8e93..eafebe35 100644 --- a/CocoaSplit/CSPreviewOverlayView.m +++ b/CocoaSplit/CSPreviewOverlayView.m @@ -189,7 +189,7 @@ if (!_closeButton) { - _closeButton = [NSWindow standardWindowButton:NSWindowCloseButton forStyleMask:NSClosableWindowMask]; + _closeButton = [NSWindow standardWindowButton:NSWindowCloseButton forStyleMask:NSWindowStyleMaskClosable]; [self addSubview:_closeButton]; _closeButton.target = self; _closeButton.action = @selector(deleteSource); @@ -197,7 +197,7 @@ if (!_autoFitButton) { - _autoFitButton = [NSWindow standardWindowButton:NSWindowZoomButton forStyleMask:NSClosableWindowMask]; + _autoFitButton = [NSWindow standardWindowButton:NSWindowZoomButton forStyleMask:NSWindowStyleMaskClosable]; [self addSubview:_autoFitButton]; _autoFitButton.target = self; _autoFitButton.action = @selector(autoFitSource); diff --git a/CocoaSplit/CSTimedOutputBuffer.m b/CocoaSplit/CSTimedOutputBuffer.m index 174e230a..9e5c7ec9 100644 --- a/CocoaSplit/CSTimedOutputBuffer.m +++ b/CocoaSplit/CSTimedOutputBuffer.m @@ -233,7 +233,6 @@ { if (ptsStarts[pkt.stream_index] == 0) { - NSLog(@"PTS START %lld", pkt.pts); ptsStarts[pkt.stream_index] = pkt.pts; } diff --git a/CocoaSplit/CaptureController.m b/CocoaSplit/CaptureController.m index 00ebbd7b..f5111973 100644 --- a/CocoaSplit/CaptureController.m +++ b/CocoaSplit/CaptureController.m @@ -1375,6 +1375,7 @@ NSString *const CSAppearanceSystem = @"CSAppearanceSystem"; if (useRecorder) { [useRecorder stopRecordingForOutput:output]; + [layout clearSourceList]; //output.active = NO; if (self.mainLayoutRecorder) { @@ -3139,7 +3140,7 @@ NSString *const CSAppearanceSystem = @"CSAppearanceSystem"; //self.mainLayoutRecorder.compressors = self.compressors; [self.mainLayoutRecorder.compressors setValue:self.compressors[@"InstantRecorder"] forKey:@"InstantRecorder"]; - self.mainLayoutRecorder.outputs = self.captureDestinations; + //self.mainLayoutRecorder.outputs = self.captureDestinations; [self.mainLayoutRecorder startRecordingCommon]; @@ -3924,7 +3925,7 @@ NSString *const CSAppearanceSystem = @"CSAppearanceSystem"; [confirmationAlert setInformativeText:infoString]; } - [confirmationAlert setAlertStyle:NSWarningAlertStyle]; + [confirmationAlert setAlertStyle:NSAlertStyleWarning]; if ([confirmationAlert runModal] == NSAlertFirstButtonReturn) { diff --git a/CocoaSplit/Compressor/AppleVTCompressor.m b/CocoaSplit/Compressor/AppleVTCompressor.m index 429cd91c..a6aa25ab 100644 --- a/CocoaSplit/Compressor/AppleVTCompressor.m +++ b/CocoaSplit/Compressor/AppleVTCompressor.m @@ -220,10 +220,13 @@ OSStatus VTCompressionSessionCopySupportedPropertyDictionary(VTCompressionSessio bool ret = NO; CFArrayRef encoders = NULL; - NSDictionary *opts = @{@"RevealHiddefnEncoders": @YES, @"RevealHardwareAcceleratedEncoders": @YES}; + NSDictionary *opts = @{@"RevealHiddenEncoders": @YES, @"RevealHardwareAcceleratedEncoders": @YES}; + VTCopyVideoEncoderList((__bridge CFDictionaryRef _Nullable)(opts), &encoders); + NSLog(@"ENCODERS %@", encoders); + + - VTCopyVideoEncoderList((__bridge CFDictionaryRef _Nullable)(opts), &encoders); @@ -231,7 +234,6 @@ OSStatus VTCompressionSessionCopySupportedPropertyDictionary(VTCompressionSessio for (NSDictionary *encode in nsEnc) { - NSString *cName = [encode objectForKey:(NSString *)kVTVideoEncoderList_CodecName]; if ([cName isEqualToString:@"HEVC"]) { @@ -247,8 +249,6 @@ OSStatus VTCompressionSessionCopySupportedPropertyDictionary(VTCompressionSessio +(bool)intelQSVAvailable { - - NSMutableDictionary *encoderSpec = [[NSMutableDictionary alloc] init]; encoderSpec[(__bridge NSString *)kVTVideoEncoderSpecification_RequireHardwareAcceleratedVideoEncoder] = @YES; diff --git a/CocoaSplit/Compressor/AppleVTCompressorBase.m b/CocoaSplit/Compressor/AppleVTCompressorBase.m index 6d6617e8..0d3c04ec 100644 --- a/CocoaSplit/Compressor/AppleVTCompressorBase.m +++ b/CocoaSplit/Compressor/AppleVTCompressorBase.m @@ -193,7 +193,7 @@ void PixelBufferRelease( void *releaseRefCon, const void *baseAddress ) //CVPixelBufferRelease(imageBuffer); - + VTCompressionSessionEncodeFrame(_compression_session, frameData.videoFrame, frameData.videoPTS, frameData.videoDuration, frameProperties, (__bridge_retained void *)(frameData), NULL); if (frameProperties) @@ -253,7 +253,7 @@ void PixelBufferRelease( void *releaseRefCon, const void *baseAddress ) CFMutableDictionaryRef transferProps = CFDictionaryCreateMutable(kCFAllocatorDefault, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks); CFDictionarySetValue(transferProps, kVTPixelTransferPropertyKey_ScalingMode, kVTScalingMode_Letterbox); - + CFDictionarySetValue(transferProps, kVTPixelTransferPropertyKey_DestinationTransferFunction, kCVImageBufferTransferFunction_ITU_R_709_2); VTSessionSetProperty(_compression_session, kVTCompressionPropertyKey_PixelTransferProperties, transferProps); CFRelease(transferProps); diff --git a/CocoaSplit/Compressor/CSAppleHEVCCompressor.m b/CocoaSplit/Compressor/CSAppleHEVCCompressor.m index c019cad4..463e951e 100644 --- a/CocoaSplit/Compressor/CSAppleHEVCCompressor.m +++ b/CocoaSplit/Compressor/CSAppleHEVCCompressor.m @@ -42,7 +42,7 @@ { encoderSpec[(__bridge NSString *)kVTVideoEncoderSpecification_RequireHardwareAcceleratedVideoEncoder] = @YES; } - + return encoderSpec; } diff --git a/CocoaSplit/Compressor/CSPassthroughCompressor.m b/CocoaSplit/Compressor/CSPassthroughCompressor.m index da39c378..90bc1a7b 100644 --- a/CocoaSplit/Compressor/CSPassthroughCompressor.m +++ b/CocoaSplit/Compressor/CSPassthroughCompressor.m @@ -128,8 +128,13 @@ { CVPixelBufferRelease(useFrame); } + NSDictionary *outputsCopy = nil; - for (id dKey in self.outputs) + @synchronized(self) + { + outputsCopy = self.outputs.copy; + } + for (id dKey in outputsCopy ) { OutputDestination *dest = self.outputs[dKey]; [dest writeEncodedData:imageBuffer]; diff --git a/CocoaSplit/Compressor/CompressorBase.h b/CocoaSplit/Compressor/CompressorBase.h index aec0de3d..20fd15e6 100644 --- a/CocoaSplit/Compressor/CompressorBase.h +++ b/CocoaSplit/Compressor/CompressorBase.h @@ -43,7 +43,7 @@ - +-(int) drainOutputBufferFrame; -(void) reset; -(BOOL) setupResolution:(CVImageBufferRef)withFrame; -(id )getConfigurationView; diff --git a/CocoaSplit/Compressor/CompressorBase.m b/CocoaSplit/Compressor/CompressorBase.m index 0d5c5ea6..39c94003 100644 --- a/CocoaSplit/Compressor/CompressorBase.m +++ b/CocoaSplit/Compressor/CompressorBase.m @@ -140,6 +140,30 @@ } +-(int) drainOutputBufferFrame +{ + + int drain_cnt = 0; + if (self.outputs.count > 0) + { + NSDictionary *outputs = self.outputs; + for (id dKey in outputs) + { + OutputDestination *dest = self.outputs[dKey]; + + if (dest.buffer_draining) + { + drain_cnt++; + [dest writeEncodedData:nil]; + } + + } + + } + return drain_cnt; +} + + -(void) removeOutput:(OutputDestination *)destination { diff --git a/CocoaSplit/Compressor/VideoCompressor.h b/CocoaSplit/Compressor/VideoCompressor.h index 379cff6e..5e25367e 100644 --- a/CocoaSplit/Compressor/VideoCompressor.h +++ b/CocoaSplit/Compressor/VideoCompressor.h @@ -42,6 +42,7 @@ @property (assign) bool active; @property (assign) float frameRate; +-(int) drainOutputBufferFrame; -(void) addOutput:(id)destination; -(void) removeOutput:(id)destination; -(bool) hasOutputs; diff --git a/CocoaSplit/InputLibrary/CSLibraryInputItemViewController.m b/CocoaSplit/InputLibrary/CSLibraryInputItemViewController.m index 50826e90..12ffd983 100644 --- a/CocoaSplit/InputLibrary/CSLibraryInputItemViewController.m +++ b/CocoaSplit/InputLibrary/CSLibraryInputItemViewController.m @@ -40,7 +40,7 @@ } SourceLayout *useLayout = [CaptureController sharedCaptureController].activeLayout; - if ([NSEvent modifierFlags]& NSCommandKeyMask) + if ([NSEvent modifierFlags]& NSEventModifierFlagCommand) { useLayout = [CaptureController sharedCaptureController].selectedLayout; } diff --git a/CocoaSplit/Interface/Audio/CAMultiAudioEffectWindow.m b/CocoaSplit/Interface/Audio/CAMultiAudioEffectWindow.m index 2f6f93de..aa2c04b7 100644 --- a/CocoaSplit/Interface/Audio/CAMultiAudioEffectWindow.m +++ b/CocoaSplit/Interface/Audio/CAMultiAudioEffectWindow.m @@ -20,7 +20,7 @@ } NSRect contentRect = NSMakeRect(0, 0, self.audioUnitView.frame.size.width, self.audioUnitView.frame.size.height); - if (self = [super initWithContentRect:contentRect styleMask:NSTitledWindowMask|NSClosableWindowMask|NSMiniaturizableWindowMask|NSResizableWindowMask backing:NSBackingStoreBuffered defer:YES]) + if (self = [super initWithContentRect:contentRect styleMask:NSWindowStyleMaskTitled|NSWindowStyleMaskClosable|NSWindowStyleMaskMiniaturizable|NSWindowStyleMaskResizable backing:NSBackingStoreBuffered defer:YES]) { self.level = NSNormalWindowLevel; diff --git a/CocoaSplit/Interface/CSGridView.m b/CocoaSplit/Interface/CSGridView.m index 2bfde15f..9da57e11 100644 --- a/CocoaSplit/Interface/CSGridView.m +++ b/CocoaSplit/Interface/CSGridView.m @@ -16,7 +16,7 @@ if (self.backgroundColor) { [self.backgroundColor setFill]; - NSRectFillUsingOperation(dirtyRect, NSCompositeSourceOver); + NSRectFillUsingOperation(dirtyRect, NSCompositingOperationSourceOver); } [super drawRect:dirtyRect]; diff --git a/CocoaSplit/Interface/CSLayoutButtonView.m b/CocoaSplit/Interface/CSLayoutButtonView.m index d7c29e04..3a6c1fb5 100644 --- a/CocoaSplit/Interface/CSLayoutButtonView.m +++ b/CocoaSplit/Interface/CSLayoutButtonView.m @@ -61,7 +61,7 @@ { SourceLayout *myLayout = self.viewController.representedObject; NSPoint mouseLoc = [self convertPoint:event.locationInWindow fromView:nil]; - if (event.modifierFlags & NSShiftKeyMask && !(myLayout.in_live || myLayout.in_staging) ) + if (event.modifierFlags & NSEventModifierFlagShift && !(myLayout.in_live || myLayout.in_staging) ) { if (mouseLoc.x < NSMidX(self.frame)) { diff --git a/CocoaSplit/Interface/CSLayoutCollectionItem.m b/CocoaSplit/Interface/CSLayoutCollectionItem.m index fc1ccdeb..3eb47159 100644 --- a/CocoaSplit/Interface/CSLayoutCollectionItem.m +++ b/CocoaSplit/Interface/CSLayoutCollectionItem.m @@ -112,12 +112,12 @@ { SourceLayout *useLayout = self.captureController.activePreviewView.sourceLayout; - if ([NSEvent modifierFlags]& NSCommandKeyMask) + if ([NSEvent modifierFlags]& NSEventModifierFlagCommand) { useLayout = self.captureController.selectedLayout; } - if ([NSEvent modifierFlags] & NSShiftKeyMask) + if ([NSEvent modifierFlags] & NSEventModifierFlagShift) { if (!self.upImage.hidden) { diff --git a/CocoaSplit/Interface/CSLayoutSwitcherView.m b/CocoaSplit/Interface/CSLayoutSwitcherView.m index 72115643..9e65cdde 100644 --- a/CocoaSplit/Interface/CSLayoutSwitcherView.m +++ b/CocoaSplit/Interface/CSLayoutSwitcherView.m @@ -123,13 +123,13 @@ SourceLayout *useLayout = controller.activePreviewView.sourceLayout; - if (event.modifierFlags & NSCommandKeyMask) + if (event.modifierFlags & NSEventModifierFlagCommand) { useLayout = controller.selectedLayout; } - if (event.modifierFlags & NSShiftKeyMask) + if (event.modifierFlags & NSEventModifierFlagShift) { [controller toggleLayout:self.sourceLayout usingLayout:useLayout]; } else { diff --git a/CocoaSplit/Interface/CSMidiManagerWindowController.m b/CocoaSplit/Interface/CSMidiManagerWindowController.m index 1b50e08c..d92565f6 100644 --- a/CocoaSplit/Interface/CSMidiManagerWindowController.m +++ b/CocoaSplit/Interface/CSMidiManagerWindowController.m @@ -87,7 +87,7 @@ -(void)createModal { - NSWindow *newWindow = [[NSWindow alloc] initWithContentRect:NSMakeRect(0, 0, self.window.frame.size.width, 300) styleMask:NSTexturedBackgroundWindowMask backing:NSBackingStoreBuffered defer:NO]; + NSWindow *newWindow = [[NSWindow alloc] initWithContentRect:NSMakeRect(0, 0, self.window.frame.size.width, 300) styleMask:NSWindowStyleMaskTexturedBackground backing:NSBackingStoreBuffered defer:NO]; NSTextField *text = [[NSTextField alloc] initWithFrame:newWindow.frame]; text.editable = NO; diff --git a/CocoaSplit/Interface/CSNSButtonCellThemed.m b/CocoaSplit/Interface/CSNSButtonCellThemed.m index be387513..5a5904b3 100644 --- a/CocoaSplit/Interface/CSNSButtonCellThemed.m +++ b/CocoaSplit/Interface/CSNSButtonCellThemed.m @@ -23,7 +23,7 @@ { useImage = [image tintedImageWithColor:NSColor.whiteColor]; } - [useImage drawInRect:frame fromRect:NSMakeRect(0, 0, image.size.width, image.size.height) operation:NSCompositeSourceOver fraction:1.0 respectFlipped:YES hints:nil]; + [useImage drawInRect:frame fromRect:NSMakeRect(0, 0, image.size.width, image.size.height) operation:NSCompositingOperationSourceOver fraction:1.0 respectFlipped:YES hints:nil]; } @end diff --git a/CocoaSplit/Interface/TransitionSwitcherView/CSTransitionCollectionItem.m b/CocoaSplit/Interface/TransitionSwitcherView/CSTransitionCollectionItem.m index e1670db1..fc47e8f0 100644 --- a/CocoaSplit/Interface/TransitionSwitcherView/CSTransitionCollectionItem.m +++ b/CocoaSplit/Interface/TransitionSwitcherView/CSTransitionCollectionItem.m @@ -49,7 +49,7 @@ CSTransitionBase *myTransition = self.representedObject; - bool toggleClick = [NSEvent modifierFlags] & NSShiftKeyMask; + bool toggleClick = [NSEvent modifierFlags] & NSEventModifierFlagShift; if (toggleClick && myTransition.canToggle) { diff --git a/CocoaSplit/Interface/Transitions/CSCIFilterLayoutTransitionViewController.m b/CocoaSplit/Interface/Transitions/CSCIFilterLayoutTransitionViewController.m index 1567d4b5..6bb12daf 100644 --- a/CocoaSplit/Interface/Transitions/CSCIFilterLayoutTransitionViewController.m +++ b/CocoaSplit/Interface/Transitions/CSCIFilterLayoutTransitionViewController.m @@ -41,7 +41,7 @@ [self.transitionFilterWindow setContentSize:filterView.bounds.size]; [self.transitionFilterWindow.contentView addSubview:filterView]; - self.transitionFilterWindow.styleMask = NSTitledWindowMask|NSClosableWindowMask|NSMiniaturizableWindowMask; + self.transitionFilterWindow.styleMask = NSWindowStyleMaskTitled|NSWindowStyleMaskClosable|NSWindowStyleMaskMiniaturizable; [self.transitionFilterWindow setReleasedWhenClosed:NO]; [self.transitionFilterWindow makeKeyAndOrderFront:self.transitionFilterWindow]; diff --git a/CocoaSplit/Interface/Transitions/CSFilterImageLayoutTransitionViewController.m b/CocoaSplit/Interface/Transitions/CSFilterImageLayoutTransitionViewController.m index a32703ed..18bf1846 100644 --- a/CocoaSplit/Interface/Transitions/CSFilterImageLayoutTransitionViewController.m +++ b/CocoaSplit/Interface/Transitions/CSFilterImageLayoutTransitionViewController.m @@ -52,7 +52,7 @@ [self.transitionFilterWindow setContentSize:filterView.bounds.size]; [self.transitionFilterWindow.contentView addSubview:filterView]; - self.transitionFilterWindow.styleMask = NSTitledWindowMask|NSClosableWindowMask|NSMiniaturizableWindowMask; + self.transitionFilterWindow.styleMask = NSWindowStyleMaskTitled|NSWindowStyleMaskClosable|NSWindowStyleMaskMiniaturizable; [self.transitionFilterWindow setReleasedWhenClosed:NO]; [self.transitionFilterWindow makeKeyAndOrderFront:self.transitionFilterWindow]; diff --git a/CocoaSplit/LayerFilters/CSLayerFiltersViewController.m b/CocoaSplit/LayerFilters/CSLayerFiltersViewController.m index 7d3d1027..7803d1f0 100644 --- a/CocoaSplit/LayerFilters/CSLayerFiltersViewController.m +++ b/CocoaSplit/LayerFilters/CSLayerFiltersViewController.m @@ -130,7 +130,7 @@ self.userFilterWindow.delegate = self; [self.userFilterWindow setContentSize:filterView.bounds.size]; [self.userFilterWindow.contentView addSubview:filterView]; - self.userFilterWindow.styleMask = NSTitledWindowMask|NSClosableWindowMask|NSMiniaturizableWindowMask; + self.userFilterWindow.styleMask = NSWindowStyleMaskTitled|NSWindowStyleMaskClosable|NSWindowStyleMaskMiniaturizable; [self.userFilterWindow setReleasedWhenClosed:NO]; [self.userFilterWindow makeKeyAndOrderFront:self.userFilterWindow]; diff --git a/CocoaSplit/LayoutRenderer.m b/CocoaSplit/LayoutRenderer.m index 0953f90b..e85454b9 100644 --- a/CocoaSplit/LayoutRenderer.m +++ b/CocoaSplit/LayoutRenderer.m @@ -374,9 +374,15 @@ NSMutableDictionary *attributes = [NSMutableDictionary dictionary]; [attributes setValue:[NSNumber numberWithInt:size.width] forKey:(NSString *)kCVPixelBufferWidthKey]; [attributes setValue:[NSNumber numberWithInt:size.height] forKey:(NSString *)kCVPixelBufferHeightKey]; - [attributes setValue:@{(NSString *)kIOSurfaceIsGlobal: @NO} forKey:(NSString *)kCVPixelBufferIOSurfacePropertiesKey]; + [attributes setValue:@{} forKey:(NSString *)kCVPixelBufferIOSurfacePropertiesKey]; [attributes setValue:[NSNumber numberWithUnsignedInt:kCVPixelFormatType_32BGRA] forKey:(NSString *)kCVPixelBufferPixelFormatTypeKey]; [attributes setValue:@YES forKey:(NSString *)kCVPixelBufferMetalCompatibilityKey]; + CGColorSpaceRef rgbColorSpace = CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB); + CFDataRef rgbProfileData = CGColorSpaceCopyICCProfile(rgbColorSpace); + NSDictionary *poolAttachments = @{(NSString *)kCVImageBufferICCProfileKey : (__bridge NSData *)rgbProfileData, (NSString *)kCVImageBufferTransferFunctionKey: (NSString *)kCVImageBufferTransferFunction_ITU_R_709_2}; + [attributes setValue:poolAttachments forKey:(NSString *)kCVBufferPropagatedAttachmentsKey]; + CFRelease(rgbColorSpace); + if (_cvpool) @@ -416,6 +422,8 @@ -(void)dealloc { + + NSLog(@"DEALLOC RENDER %@", self); if (_cvpool) { CVPixelBufferPoolRelease(_cvpool); diff --git a/CocoaSplit/NSImage+tintedImage.m b/CocoaSplit/NSImage+tintedImage.m index c3d7191b..14e85208 100644 --- a/CocoaSplit/NSImage+tintedImage.m +++ b/CocoaSplit/NSImage+tintedImage.m @@ -16,7 +16,7 @@ [copy lockFocus]; [color set]; - NSRectFillUsingOperation(NSMakeRect(0, 0, self.size.width, self.size.height), NSCompositeSourceAtop); + NSRectFillUsingOperation(NSMakeRect(0, 0, self.size.width, self.size.height), NSCompositingOperationSourceAtop); [copy unlockFocus]; return copy; } diff --git a/CocoaSplit/PreviewView.m b/CocoaSplit/PreviewView.m index 9640e710..a0a0981f 100644 --- a/CocoaSplit/PreviewView.m +++ b/CocoaSplit/PreviewView.m @@ -169,7 +169,7 @@ -(void)keyDown:(NSEvent *)theEvent { - if ([theEvent.charactersIgnoringModifiers isEqualToString:@"f"] && (theEvent.modifierFlags & NSCommandKeyMask)) + if ([theEvent.charactersIgnoringModifiers isEqualToString:@"f"] && (theEvent.modifierFlags & NSEventModifierFlagCommand)) { [self toggleFullscreen:self]; } @@ -259,12 +259,12 @@ tmp = [self.sourceSettingsMenu insertItemWithTitle:@"Clone Without Cache" action:@selector(cloneInputSourceNoCache:) keyEquivalent:@"" atIndex:idx++]; tmp.target = self; tmp.alternate = YES; - tmp.keyEquivalentModifierMask = NSAlternateKeyMask; + tmp.keyEquivalentModifierMask = NSEventModifierFlagOption; tmp = [self.sourceSettingsMenu insertItemWithTitle:@"Make Source Private" action:@selector(privatizeSource:) keyEquivalent:@"" atIndex:idx++]; tmp.target = self; tmp.alternate = YES; - tmp.keyEquivalentModifierMask = NSControlKeyMask; + tmp.keyEquivalentModifierMask = NSEventModifierFlagControl; NSString *freezeString = @"Freeze"; if (self.selectedSource.isFrozen) @@ -589,7 +589,7 @@ bool doDeep = YES; - if (event.modifierFlags & NSControlKeyMask) + if (event.modifierFlags & NSEventModifierFlagControl) { doDeep = NO; } @@ -658,7 +658,7 @@ InputSource *deepSource = [self.sourceLayout findSource:worldPoint deepParent:YES]; ; - if (theEvent.modifierFlags & NSControlKeyMask) + if (theEvent.modifierFlags & NSEventModifierFlagControl) { self.selectedSource = topSource; } else { @@ -715,17 +715,17 @@ if (self.isResizing) { - if (theEvent.modifierFlags & NSAlternateKeyMask) + if (theEvent.modifierFlags & NSEventModifierFlagOption) { self.resizeType |= kResizeCenter; } - if (theEvent.modifierFlags & NSControlKeyMask) + if (theEvent.modifierFlags & NSEventModifierFlagControl) { self.resizeType |= kResizeFree; } - if (theEvent.modifierFlags & NSShiftKeyMask) + if (theEvent.modifierFlags & NSEventModifierFlagShift) { self.resizeType |= kResizeCrop; } @@ -793,7 +793,7 @@ if (self.isResizing) { - if (theEvent.modifierFlags & NSAlternateKeyMask) + if (theEvent.modifierFlags & NSEventModifierFlagOption) { self.resizeType |= kResizeCenter; } else { @@ -2071,7 +2071,7 @@ configWindow.title = [NSString stringWithFormat:@"CocoaSplit Input (%@)", configSrc.name]; configWindow.delegate = self; - configWindow.styleMask = NSTitledWindowMask|NSClosableWindowMask|NSMiniaturizableWindowMask; + configWindow.styleMask = NSWindowStyleMaskTitled|NSWindowStyleMaskClosable|NSWindowStyleMaskMiniaturizable; NSWindow *cWindow = [self.activeConfigWindows objectForKey:uuid]; NSViewController *cController = [self.activeConfigControllers objectForKey:uuid]; diff --git a/CocoaSplit/SourceList/CSSourceListViewController.m b/CocoaSplit/SourceList/CSSourceListViewController.m index 5f668c8e..9b2316ba 100644 --- a/CocoaSplit/SourceList/CSSourceListViewController.m +++ b/CocoaSplit/SourceList/CSSourceListViewController.m @@ -78,12 +78,12 @@ menuEntry = [itemMenu insertItemWithTitle:@"Clone Without Cache" action:@selector(cloneInputSourceNoCache:) keyEquivalent:@"" atIndex:idx++]; menuEntry.representedObject = item; menuEntry.alternate = YES; - menuEntry.keyEquivalentModifierMask = NSAlternateKeyMask; + menuEntry.keyEquivalentModifierMask = NSEventModifierFlagOption; menuEntry = [itemMenu insertItemWithTitle:@"Make Source Private" action:@selector(privatizeSource:) keyEquivalent:@"" atIndex:idx++]; menuEntry.representedObject = item; menuEntry.alternate = YES; - menuEntry.keyEquivalentModifierMask = NSControlKeyMask; + menuEntry.keyEquivalentModifierMask = NSEventModifierFlagControl; NSString *freezeStr = nil; if (vidSrc.isFrozen) @@ -1274,7 +1274,7 @@ configWindow.title = [NSString stringWithFormat:@"CocoaSplit Input (%@)", configSrc.name]; configWindow.delegate = self; - configWindow.styleMask = NSTitledWindowMask|NSClosableWindowMask|NSMiniaturizableWindowMask; + configWindow.styleMask = NSWindowStyleMaskTitled|NSWindowStyleMaskClosable|NSWindowStyleMaskMiniaturizable; NSWindow *cWindow = [_activeConfigWindows objectForKey:uuid]; NSViewController *cController = [_activeConfigControllers objectForKey:uuid]; diff --git a/InputPopupControllerViewController.m b/InputPopupControllerViewController.m index 33b61d9c..294c32ef 100644 --- a/InputPopupControllerViewController.m +++ b/InputPopupControllerViewController.m @@ -367,7 +367,7 @@ self.userFilterWindow.delegate = self; [self.userFilterWindow setContentSize:filterView.bounds.size]; [self.userFilterWindow.contentView addSubview:filterView]; - self.userFilterWindow.styleMask = NSTitledWindowMask|NSClosableWindowMask|NSMiniaturizableWindowMask; + self.userFilterWindow.styleMask = NSWindowStyleMaskTitled|NSWindowStyleMaskClosable|NSWindowStyleMaskMiniaturizable; [self.userFilterWindow setReleasedWhenClosed:NO]; [self.userFilterWindow makeKeyAndOrderFront:self.userFilterWindow]; @@ -440,7 +440,7 @@ [self.transitionFilterWindow setContentSize:filterView.bounds.size]; [self.transitionFilterWindow.contentView addSubview:filterView]; - self.transitionFilterWindow.styleMask = NSTitledWindowMask|NSClosableWindowMask|NSMiniaturizableWindowMask; + self.transitionFilterWindow.styleMask = NSWindowStyleMaskTitled|NSWindowStyleMaskClosable|NSWindowStyleMaskMiniaturizable; [self.transitionFilterWindow setReleasedWhenClosed:NO]; [self.transitionFilterWindow makeKeyAndOrderFront:self.transitionFilterWindow]; @@ -510,7 +510,7 @@ configWindow.title = [NSString stringWithFormat:@"CocoaSplit Input (%@)", windowController.inputSource.name]; configWindow.delegate = windowController.inputSource; - configWindow.styleMask = NSTitledWindowMask|NSClosableWindowMask|NSMiniaturizableWindowMask; + configWindow.styleMask = NSWindowStyleMaskTitled|NSWindowStyleMaskClosable|NSWindowStyleMaskMiniaturizable; windowController.inputSource.editorWindow = configWindow; windowController.inputSource.editorController = windowController;