[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [24976] trunk/blender/source/blender/ quicktime/apple/qtkit_export.m: qtkit : improve thread safety, enforce build on OSX 10.5+

Damien Plisson damien.plisson at yahoo.fr
Sat Nov 28 19:16:27 CET 2009


Revision: 24976
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=24976
Author:   damien78
Date:     2009-11-28 19:16:27 +0100 (Sat, 28 Nov 2009)

Log Message:
-----------
qtkit : improve thread safety, enforce build on OSX 10.5+
qtkit movie creation functions can be started in a worker thread only from OSX 10.5

Modified Paths:
--------------
    trunk/blender/source/blender/quicktime/apple/qtkit_export.m

Modified: trunk/blender/source/blender/quicktime/apple/qtkit_export.m
===================================================================
--- trunk/blender/source/blender/quicktime/apple/qtkit_export.m	2009-11-28 18:08:17 UTC (rev 24975)
+++ trunk/blender/source/blender/quicktime/apple/qtkit_export.m	2009-11-28 18:16:27 UTC (rev 24976)
@@ -60,6 +60,11 @@
 #endif
 #import <Cocoa/Cocoa.h>
 #import <QTKit/QTKit.h>
+
+#if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4
+#error OSX 10.5 minimum is needed for QTKit
+#endif
+
 #endif /* __APPLE__ */
 
 typedef struct QuicktimeExport {
@@ -127,9 +132,12 @@
 	char name[2048];
 
 	
-	if(qtexport == NULL) qtexport = MEM_callocN(sizeof(QuicktimeExport), "QuicktimeExport");
-
 	if (G.afbreek != 1) {
+		
+		if(qtexport == NULL) qtexport = MEM_callocN(sizeof(QuicktimeExport), "QuicktimeExport");
+		
+		[QTMovie enterQTKitOnThread];		
+		
 		/* Check first if the QuickTime 7.2.1 initToWritableFile: method is available */
 		if ([[[[QTMovie alloc] init] autorelease] respondsToSelector:@selector(initToWritableFile:error:)] != YES) {
 			G.afbreek = 1;
@@ -144,6 +152,7 @@
 			if(qtexport->movie == nil) {
 				G.afbreek = 1;
 				NSLog(@"Unable to create quicktime movie : %@",[error localizedDescription]);
+				[QTMovie exitQTKitOnThread];
 			} else {
 				[qtexport->movie retain];
 				[qtexport->filename retain];
@@ -235,6 +244,8 @@
 		[qtexport->frameAttributes release];
 		[qtexport->movie release];
 		}
+	
+	[QTMovie exitQTKitOnThread];
 
 	if(qtexport) {
 		MEM_freeN(qtexport);





More information about the Bf-blender-cvs mailing list