OSDN Git Service

Enable jam to work by changing the error handling to use a callback rather than a...
authoreddyg <eddyg@b64f7644-9d1e-0410-96f1-a4d463321fa5>
Mon, 27 Aug 2007 22:06:37 +0000 (22:06 +0000)
committereddyg <eddyg@b64f7644-9d1e-0410-96f1-a4d463321fa5>
Mon, 27 Aug 2007 22:06:37 +0000 (22:06 +0000)
git-svn-id: svn://localhost/HandBrake/trunk@880 b64f7644-9d1e-0410-96f1-a4d463321fa5

libhb/common.c
libhb/common.h
macosx/main.mm
test/test.c

index 45d207c..7a9679f 100644 (file)
@@ -36,6 +36,8 @@ int hb_audio_bitrates_count = sizeof( hb_audio_bitrates ) /
                               sizeof( hb_rate_t );
 int hb_audio_bitrates_default = 8; /* 128 kbps */
 
+static hb_error_handler_t *error_handler = NULL;
+
 hb_mixdown_t hb_audio_mixdowns[] =
 { { "Mono",               "HB_AMIXDOWN_MONO",      "mono",   HB_AMIXDOWN_MONO      },
   { "Stereo",             "HB_AMIXDOWN_STEREO",    "stereo", HB_AMIXDOWN_STEREO    },
@@ -530,12 +532,8 @@ void hb_log( char * log, ... )
 void hb_error( char * log, ... )
 {
     char        string[181]; /* 180 chars + \0 */
-    time_t      _now;
-    struct tm * now;
     va_list     args;
 
-    extern void hb_error_handler(const char *errmsg);
-
     /* Convert the message to a string */
     va_start( args, log );
     vsnprintf( string, 180, log, args );
@@ -544,7 +542,17 @@ void hb_error( char * log, ... )
     /*
      * Got the error in a single string, send it off to be dispatched.
      */
-    hb_error_handler(string);
+    if( error_handler )
+    {
+        error_handler( string );
+    } else {
+        hb_log( string );
+    }
+}
+
+void hb_register_error_handler( hb_error_handler_t * handler )
+{
+    error_handler = handler;
 }
 
 /**********************************************************************
index 416a93e..0fc3647 100644 (file)
@@ -550,4 +550,8 @@ extern hb_filter_object_t hb_filter_deinterlace;
 extern hb_filter_object_t hb_filter_deblock;
 extern hb_filter_object_t hb_filter_denoise;
 
+typedef void hb_error_handler_t( const char *errmsg );
+
+extern void hb_register_error_handler( hb_error_handler_t * handler );
+
 #endif
index 7880214..d4a05b5 100644 (file)
@@ -5,6 +5,7 @@
    It may be used under the terms of the GNU General Public License. */
 
 #include <Cocoa/Cocoa.h>
+#import "hb.h"
 
 void SigHandler( int signal )
 {
@@ -20,12 +21,13 @@ void SigHandler( int signal )
 extern "C" {
 void hb_error_handler( const char *errmsg )
 {
-    fprintf(stderr, "ERROR: %s\n", errmsg );
+    fprintf(stderr, "GUI ERROR dialog: %s\n", errmsg );
 }
 }
 
 int main( int argc, const char ** argv )
 {
     signal( SIGINT, SigHandler );
+    hb_register_error_handler(&hb_error_handler);
     return NSApplicationMain( argc, argv );
 }
index 49b787a..8694dc0 100644 (file)
@@ -77,6 +77,17 @@ static int  ParseOptions( int argc, char ** argv );
 static int  CheckOptions( int argc, char ** argv );
 static int  HandleEvents( hb_handle_t * h );
 
+/****************************************************************************
+ * hb_error_handler
+ * 
+ * When using the CLI just display using hb_log as we always did in the past
+ * make sure that we prefix with a nice ERROR message to catch peoples eyes.
+ ****************************************************************************/
+static void hb_cli_error_handler ( const char *errmsg )
+{
+    hb_log( "ERROR: %s", errmsg );
+}
+
 int main( int argc, char ** argv )
 {
     hb_handle_t * h;
@@ -90,6 +101,9 @@ int main( int argc, char ** argv )
         return 1;
     }
 
+    /* Register our error handler */
+    hb_register_error_handler(&hb_cli_error_handler);
+
     /* Init libhb */
     h = hb_init( debug, update );
 
@@ -1344,14 +1358,3 @@ static int CheckOptions( int argc, char ** argv )
 
     return 0;
 }
-
-/****************************************************************************
- * hb_error_handler
- * 
- * When using the CLI just display using hb_log as we always did in the past
- * make sure that we prefix with a nice ERROR message to catch peoples eyes.
- ****************************************************************************/
-void hb_error_handler ( const char *errmsg )
-{
-    hb_log( "ERROR: %s", errmsg );
-}