Browse Source

MacOSX/Framework: Properly convert libvlc Exception to NSException. Rename quit_on_exception to catch_exception.

Pierre d'Herbemont 17 years ago
parent
commit
c7d758f812

+ 2 - 3
Headers/Internal/VLCLibrary.h

@@ -55,6 +55,5 @@
 /*
  * Utility function
  */
-// TODO: Figure out a better way to raise error messages
-#define quit_on_exception( ex ) __quit_on_exception( (void *)(ex), __FUNCTION__, __FILE__, __LINE__ )
-extern void __quit_on_exception( void * e, const char * function, const char * file, int line_number );
+#define catch_exception( ex ) __catch_exception( (void *)(ex), __FUNCTION__, __FILE__, __LINE__ )
+extern void __catch_exception( void * e, const char * function, const char * file, int line_number );

+ 2 - 2
Sources/VLCAudio.m

@@ -58,7 +58,7 @@ NSString * VLCMediaPlayerVolumeChanged = @"VLCMediaPlayerVolumeChanged";
     libvlc_exception_t ex;
     libvlc_exception_init(&ex);
     BOOL result = libvlc_audio_get_mute([library instance], &ex);
-    quit_on_exception(&ex);
+    catch_exception(&ex);
     
     return result;
 }
@@ -77,7 +77,7 @@ NSString * VLCMediaPlayerVolumeChanged = @"VLCMediaPlayerVolumeChanged";
     libvlc_exception_t ex;
     libvlc_exception_init(&ex);
     int result = libvlc_audio_get_volume([library instance], &ex);
-    quit_on_exception(&ex);
+    catch_exception(&ex);
     return result;
 }
 @end

+ 8 - 6
Sources/VLCLibrary.m

@@ -31,15 +31,17 @@
 static VLCLibrary * sharedLibrary = nil;
 
 // TODO: Change from a terminal error to raising an exception?
-void __quit_on_exception( void * e, const char * function, const char * file, int line_number )
+void __catch_exception( void * e, const char * function, const char * file, int line_number )
 {
     libvlc_exception_t * ex = (libvlc_exception_t *)e;
     if (libvlc_exception_raised( ex ))
     {
-        /* XXX: localization */
-        NSRunCriticalAlertPanel( @"Error", [NSString stringWithFormat:@"libvlc has thrown us an error: %s (%s:%d %s)", 
-            libvlc_exception_get_message( ex ), file, line_number, function], @"Quit", nil, nil );
-        exit( ex->i_code );
+        NSException* libvlcException = [NSException
+            exceptionWithName:@"LibVLCException"
+            reason:[NSString stringWithFormat:@"libvlc has thrown us an error: %s (%s:%d %s)", 
+                libvlc_exception_get_message( ex ), file, line_number, function]
+            userInfo:nil];
+        @throw libvlcException;
     }
 }
 
@@ -80,7 +82,7 @@ static void * DestroySharedLibraryAtExit( void )
         };
         
         instance = (void *)libvlc_new( sizeof(lib_vlc_params)/sizeof(lib_vlc_params[0]), lib_vlc_params, &ex );
-        quit_on_exception( &ex );
+        catch_exception( &ex );
         
         // Assignment unneeded, as the audio unit will do it for us
         /*audio = */ [[VLCAudio alloc] initWithLibrary:self];

+ 5 - 5
Sources/VLCMedia.m

@@ -173,7 +173,7 @@ static void HandleMediaSubItemAdded(const libvlc_event_t * event, void * self)
         p_md = libvlc_media_descriptor_new([VLCLibrary sharedInstance],
                                            [aPath UTF8String],
                                            &ex);
-        quit_on_exception(&ex);
+        catch_exception(&ex);
         
         url = [aPath copy];
         delegate = nil;
@@ -198,7 +198,7 @@ static void HandleMediaSubItemAdded(const libvlc_event_t * event, void * self)
         p_md = libvlc_media_descriptor_new_as_node([VLCLibrary sharedInstance],
                                                    [aName UTF8String],
                                                    &ex);
-        quit_on_exception(&ex);
+        catch_exception(&ex);
         
         url = [aName copy];
         delegate = nil;
@@ -332,7 +332,7 @@ static void HandleMediaSubItemAdded(const libvlc_event_t * event, void * self)
         char * p_url;
         
         p_url = libvlc_media_descriptor_get_mrl( md, &ex );
-        quit_on_exception( &ex );
+        catch_exception( &ex );
         
         url = [[NSString stringWithUTF8String:p_url] retain];
         free( p_url );
@@ -418,14 +418,14 @@ static void HandleMediaSubItemAdded(const libvlc_event_t * event, void * self)
     libvlc_exception_init( &ex );
 
     libvlc_media_descriptor_set_user_data( p_md, (void*)self, &ex );
-    quit_on_exception( &ex );
+    catch_exception( &ex );
 
     libvlc_event_manager_t * p_em = libvlc_media_descriptor_event_manager( p_md, &ex );
     libvlc_event_attach(p_em, libvlc_MediaDescriptorMetaChanged,     HandleMediaMetaChanged,     self, &ex);
 //    libvlc_event_attach(p_em, libvlc_MediaDescriptorDurationChanged, HandleMediaDurationChanged, self, &ex);
     libvlc_event_attach(p_em, libvlc_MediaDescriptorStateChanged,    HandleMediaStateChanged,    self, &ex);
     libvlc_event_attach(p_em, libvlc_MediaDescriptorSubItemAdded,    HandleMediaSubItemAdded,    self, &ex);
-    quit_on_exception( &ex );
+    catch_exception( &ex );
     
     libvlc_media_list_t * p_mlist = libvlc_media_descriptor_subitems( p_md, NULL );
 

+ 1 - 1
Sources/VLCMediaDiscoverer.m

@@ -93,7 +93,7 @@ static void HandleMediaDiscovererEnded( const libvlc_event_t * event, void * use
         mdis = libvlc_media_discoverer_new_from_name( [VLCLibrary sharedInstance],
                                                       [aServiceName UTF8String],
                                                       &ex );
-        quit_on_exception( &ex );       
+        catch_exception( &ex );       
 
         libvlc_event_manager_t * p_em = libvlc_media_discoverer_event_manager(mdis);
         libvlc_event_attach(p_em, libvlc_MediaDiscovererStarted, HandleMediaDiscovererStarted, self, NULL);

+ 2 - 2
Sources/VLCMediaLibrary.m

@@ -47,10 +47,10 @@
         libvlc_exception_t p_e;
         libvlc_exception_init( &p_e );
         mlib = libvlc_media_library_new( [VLCLibrary sharedInstance], &p_e );
-        quit_on_exception( &p_e );
+        catch_exception( &p_e );
         
         libvlc_media_library_load( mlib, &p_e );
-        quit_on_exception( &p_e );
+        catch_exception( &p_e );
         
         allMedia = nil;
     }

+ 6 - 6
Sources/VLCMediaList.m

@@ -76,7 +76,7 @@ static void HandleMediaListItemDeleted( const libvlc_event_t * event, void * use
         libvlc_exception_t p_e;
         libvlc_exception_init( &p_e );
         p_mlist = libvlc_media_list_new( [VLCLibrary sharedInstance], &p_e );
-        quit_on_exception( &p_e );
+        catch_exception( &p_e );
         
         // Initialize internals to defaults
         cachedMedia = [[NSMutableArray alloc] init];
@@ -152,7 +152,7 @@ static void HandleMediaListItemDeleted( const libvlc_event_t * event, void * use
     libvlc_exception_t p_e;
     libvlc_exception_init( &p_e );
     libvlc_media_list_insert_media_descriptor( p_mlist, [media libVLCMediaDescriptor], index, &p_e );
-    quit_on_exception( &p_e );
+    catch_exception( &p_e );
 }
 
 - (void)removeMediaAtIndex:(int)index
@@ -163,7 +163,7 @@ static void HandleMediaListItemDeleted( const libvlc_event_t * event, void * use
     libvlc_exception_t p_e;
     libvlc_exception_init( &p_e );
     libvlc_media_list_remove_index( p_mlist, index, &p_e );
-    quit_on_exception( &p_e );
+    catch_exception( &p_e );
 }
 
 - (VLCMedia *)mediaAtIndex:(int)index
@@ -176,7 +176,7 @@ static void HandleMediaListItemDeleted( const libvlc_event_t * event, void * use
     libvlc_exception_t p_e;
     libvlc_exception_init( &p_e );
     int result = libvlc_media_list_index_of_item( p_mlist, [media libVLCMediaDescriptor], &p_e );
-    quit_on_exception( &p_e );
+    catch_exception( &p_e );
     
     return result;
 }
@@ -204,7 +204,7 @@ static void HandleMediaListItemDeleted( const libvlc_event_t * event, void * use
     libvlc_exception_t p_e;
     libvlc_exception_init( &p_e );
     BOOL isReadOnly = libvlc_media_list_is_readonly( p_mlist );
-    quit_on_exception( &p_e );
+    catch_exception( &p_e );
     
     return isReadOnly;
 }
@@ -290,7 +290,7 @@ static void HandleMediaListItemDeleted( const libvlc_event_t * event, void * use
     libvlc_event_attach( p_em, libvlc_MediaListItemAdded,   HandleMediaListItemAdded,   self, &p_e );
     libvlc_event_attach( p_em, libvlc_MediaListItemDeleted, HandleMediaListItemDeleted, self, &p_e );
     
-    quit_on_exception( &p_e );
+    catch_exception( &p_e );
 }
 
 - (void)mediaListItemAdded:(NSArray *)arrayOfArgs

+ 4 - 4
Sources/VLCMediaListAspect.m

@@ -125,7 +125,7 @@ static void HandleMediaListViewItemDeleted( const libvlc_event_t * event, void *
     libvlc_exception_t p_e;
     libvlc_exception_init( &p_e );
     libvlc_media_descriptor_t * p_md = libvlc_media_list_view_item_at_index( p_mlv, index, &p_e );
-    quit_on_exception( &p_e );
+    catch_exception( &p_e );
     
     // Returns local object for media descriptor, searchs for user data first.  If not found it creates a 
     // new cocoa object representation of the media descriptor.
@@ -137,7 +137,7 @@ static void HandleMediaListViewItemDeleted( const libvlc_event_t * event, void *
     libvlc_exception_t p_e;
     libvlc_exception_init( &p_e );
     libvlc_media_list_view_t * p_sub_mlv = libvlc_media_list_view_children_at_index( p_mlv, index, &p_e );
-    quit_on_exception( &p_e );
+    catch_exception( &p_e );
 
     if( !p_sub_mlv )
         return nil;
@@ -159,7 +159,7 @@ static void HandleMediaListViewItemDeleted( const libvlc_event_t * event, void *
     libvlc_exception_t p_e;
     libvlc_exception_init( &p_e );
     int result = libvlc_media_list_view_count( p_mlv, &p_e );
-    quit_on_exception( &p_e );
+    catch_exception( &p_e );
 
     return result;
 }
@@ -242,7 +242,7 @@ static void HandleMediaListViewItemDeleted( const libvlc_event_t * event, void *
     /* Add internal callback */
     libvlc_event_attach( p_em, libvlc_MediaListViewItemAdded,   HandleMediaListViewItemAdded,   self, &e );
     libvlc_event_attach( p_em, libvlc_MediaListViewItemDeleted, HandleMediaListViewItemDeleted, self, &e );
-    quit_on_exception( &e );
+    catch_exception( &e );
 }
 
 - (void)mediaListViewItemAdded:(NSArray *)arrayOfArgs

+ 23 - 23
Sources/VLCMediaPlayer.m

@@ -144,7 +144,7 @@ static void HandleMediaInstanceStateChanged(const libvlc_event_t * event, void *
         libvlc_exception_t ex;
         libvlc_exception_init( &ex );
         instance = (void *)libvlc_media_instance_new([VLCLibrary sharedInstance], &ex);
-        quit_on_exception( &ex );
+        catch_exception( &ex );
         
         [self registerObservers];
         
@@ -203,7 +203,7 @@ static void HandleMediaInstanceStateChanged(const libvlc_event_t * event, void *
     libvlc_media_instance_set_drawable ((libvlc_media_instance_t *)instance, 
                                         (libvlc_drawable_t)videoView, 
                                         &ex);
-    quit_on_exception( &ex );
+    catch_exception( &ex );
 }
 
 - (VLCVideoView *)videoView
@@ -221,7 +221,7 @@ static void HandleMediaInstanceStateChanged(const libvlc_event_t * event, void *
     libvlc_exception_t ex;
     libvlc_exception_init( &ex );
     int result = libvlc_get_fullscreen( instance, &ex );
-    quit_on_exception( &ex );
+    catch_exception( &ex );
     return result;
 }
 
@@ -235,7 +235,7 @@ static void HandleMediaInstanceStateChanged(const libvlc_event_t * event, void *
     libvlc_exception_t ex;
     libvlc_exception_init( &ex );
     char * result = libvlc_video_get_aspect_ratio( instance, &ex );
-    quit_on_exception( &ex );
+    catch_exception( &ex );
     return result;
 }
 
@@ -249,7 +249,7 @@ static void HandleMediaInstanceStateChanged(const libvlc_event_t * event, void *
     libvlc_exception_t ex;
     libvlc_exception_init( &ex );
     int result = libvlc_video_get_spu( instance, &ex );
-    quit_on_exception( &ex );
+    catch_exception( &ex );
     return result;
 }
 
@@ -263,7 +263,7 @@ static void HandleMediaInstanceStateChanged(const libvlc_event_t * event, void *
     libvlc_exception_t ex;
     libvlc_exception_init( &ex );
     char * result = libvlc_video_get_crop_geometry( instance, &ex );
-    quit_on_exception( &ex );
+    catch_exception( &ex );
     return result;
 }
 
@@ -277,7 +277,7 @@ static void HandleMediaInstanceStateChanged(const libvlc_event_t * event, void *
     libvlc_exception_t ex;
     libvlc_exception_init( &ex );
     int result = libvlc_video_get_teletext( instance, &ex );
-    quit_on_exception( &ex );
+    catch_exception( &ex );
     return result;
 }
 
@@ -291,7 +291,7 @@ static void HandleMediaInstanceStateChanged(const libvlc_event_t * event, void *
     libvlc_exception_t ex;
     libvlc_exception_init( &ex );
     float result = libvlc_media_instance_get_rate( instance, &ex );
-    quit_on_exception( &ex );
+    catch_exception( &ex );
     return result;
 }
 
@@ -301,7 +301,7 @@ static void HandleMediaInstanceStateChanged(const libvlc_event_t * event, void *
     libvlc_exception_init( &ex );
     NSSize result = NSMakeSize(libvlc_video_get_height((libvlc_media_instance_t *)instance, &ex),
                                libvlc_video_get_width((libvlc_media_instance_t *)instance, &ex));
-    quit_on_exception( &ex );
+    catch_exception( &ex );
     return result;    
 }
 
@@ -324,7 +324,7 @@ static void HandleMediaInstanceStateChanged(const libvlc_event_t * event, void *
     libvlc_exception_t ex;
     libvlc_exception_init( &ex );
     float result = libvlc_media_instance_get_fps( (libvlc_media_instance_t *)instance, &ex );
-    quit_on_exception( &ex );
+    catch_exception( &ex );
     return result;
 }
 
@@ -337,7 +337,7 @@ static void HandleMediaInstanceStateChanged(const libvlc_event_t * event, void *
     libvlc_media_instance_set_time( (libvlc_media_instance_t *)instance, 
                                     (value ? [[value numberValue] longLongValue] / 1000 : 0),
                                     &ex );
-    quit_on_exception( &ex );
+    catch_exception( &ex );
 }
 
 - (VLCTime *)time
@@ -355,7 +355,7 @@ static void HandleMediaInstanceStateChanged(const libvlc_event_t * event, void *
     libvlc_exception_t ex;
     libvlc_exception_init( &ex );
     int result = libvlc_media_instance_get_chapter( instance, &ex );
-    quit_on_exception( &ex );
+    catch_exception( &ex );
     return result;
 }
 
@@ -364,7 +364,7 @@ static void HandleMediaInstanceStateChanged(const libvlc_event_t * event, void *
     libvlc_exception_t ex;
     libvlc_exception_init( &ex );
     int result = libvlc_media_instance_get_chapter_count( instance, &ex );
-    quit_on_exception( &ex );
+    catch_exception( &ex );
     return result;
 }
 
@@ -378,7 +378,7 @@ static void HandleMediaInstanceStateChanged(const libvlc_event_t * event, void *
     libvlc_exception_t ex;
     libvlc_exception_init( &ex );
     int result = libvlc_audio_get_track( instance, &ex );
-    quit_on_exception( &ex );
+    catch_exception( &ex );
     return result;
 }
 
@@ -387,7 +387,7 @@ static void HandleMediaInstanceStateChanged(const libvlc_event_t * event, void *
     libvlc_exception_t ex;
     libvlc_exception_init( &ex );
     int result = libvlc_audio_get_track_count( instance, &ex );
-    quit_on_exception( &ex );
+    catch_exception( &ex );
     return result;
 }
 
@@ -401,7 +401,7 @@ static void HandleMediaInstanceStateChanged(const libvlc_event_t * event, void *
     libvlc_exception_t ex;
     libvlc_exception_init( &ex );
     int result = libvlc_audio_get_channel( instance, &ex );
-    quit_on_exception( &ex );
+    catch_exception( &ex );
     return result;
 }
 
@@ -428,7 +428,7 @@ static void HandleMediaInstanceStateChanged(const libvlc_event_t * event, void *
         libvlc_exception_t ex;
         libvlc_exception_init( &ex );
         libvlc_media_instance_set_media_descriptor( instance, [media libVLCMediaDescriptor], &ex );
-        quit_on_exception( &ex );
+        catch_exception( &ex );
     }
 }
 
@@ -442,7 +442,7 @@ static void HandleMediaInstanceStateChanged(const libvlc_event_t * event, void *
     libvlc_exception_t ex;
     libvlc_exception_init( &ex );
     libvlc_media_instance_play( (libvlc_media_instance_t *)instance, &ex );
-    quit_on_exception( &ex );
+    catch_exception( &ex );
     return YES;
 }
 
@@ -461,7 +461,7 @@ static void HandleMediaInstanceStateChanged(const libvlc_event_t * event, void *
     libvlc_exception_t ex;
     libvlc_exception_init( &ex );
     libvlc_media_instance_pause( (libvlc_media_instance_t *)instance, &ex );
-    quit_on_exception( &ex );
+    catch_exception( &ex );
     
     // TODO: Should we record the time in case the media instance is destroyed
     // then rebuilt?
@@ -479,7 +479,7 @@ static void HandleMediaInstanceStateChanged(const libvlc_event_t * event, void *
     //    libvlc_exception_t ex;
     //    libvlc_exception_init( &ex );
     //    libvlc_media_instance_stop((libvlc_media_instance_t *)instance, &ex);
-    //    quit_on_exception( &ex );
+    //    catch_exception( &ex );
     
     // Pause and reposition to the begining of the stream.
     [self pause];
@@ -539,7 +539,7 @@ static const VLCMediaPlayerState libvlc_to_local_state[] =
     libvlc_exception_t ex;
     libvlc_exception_init( &ex );
     libvlc_media_instance_set_position( instance, newPosition, &ex );
-    quit_on_exception( &ex );
+    catch_exception( &ex );
 }
 
 - (BOOL)isSeekable
@@ -547,7 +547,7 @@ static const VLCMediaPlayerState libvlc_to_local_state[] =
     libvlc_exception_t ex;
     libvlc_exception_init( &ex );
     BOOL ret = libvlc_media_instance_is_seekable( instance, &ex );
-    quit_on_exception( &ex );
+    catch_exception( &ex );
     return ret;
 }
 
@@ -567,7 +567,7 @@ static const VLCMediaPlayerState libvlc_to_local_state[] =
     /* FIXME: We may want to turn that off when none is interested by that */
     libvlc_event_attach( p_em, libvlc_MediaInstancePositionChanged, HandleMediaPositionChanged,      self, &ex );
     libvlc_event_attach( p_em, libvlc_MediaInstanceTimeChanged,     HandleMediaTimeChanged,          self, &ex );
-    quit_on_exception( &ex );
+    catch_exception( &ex );
 }
 
 - (void)unregisterObservers