]> granicus.if.org Git - handbrake/commitdiff
libhb: Allow log level changes and update checks *after* hb_init()
authorjstebbins <jstebbins.hb@gmail.com>
Fri, 12 Jun 2015 20:52:01 +0000 (20:52 +0000)
committerjstebbins <jstebbins.hb@gmail.com>
Fri, 12 Jun 2015 20:52:01 +0000 (20:52 +0000)
- In the CLI, this allows calling hb_init() before parsing args, which
permits us to see any libhb log messages that are generated during
option parsing.  These messages were hidden before.
- In the GUIs, this allows dynamic changes to log level.  Previously an
application restart was required.  I have only updated the LinGui to
take advantage of this.

git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@7295 b64f7644-9d1e-0410-96f1-a4d463321fa5

gtk/src/callbacks.c
gtk/src/ghb-3.12.ui
gtk/src/ghb-3.14.ui
gtk/src/ghb.ui
gtk/src/hb-backend.c
gtk/src/hb-backend.h
libhb/common.c
libhb/hb.c
libhb/hb.h
test/test.c

index 2e0d360008ac96b6fee62af6d25734fed81d48f8..72bd33a6f16710de85dfec1fda25c6ec4765e8d5 100644 (file)
@@ -4081,6 +4081,14 @@ pref_changed_cb(GtkWidget *widget, signal_user_data_t *ud)
     gtk_range_set_range(GTK_RANGE(widget), 1, preview_count);
 }
 
+G_MODULE_EXPORT void
+log_level_changed_cb(GtkWidget *widget, signal_user_data_t *ud)
+{
+    pref_changed_cb(widget, ud);
+    int level = ghb_dict_get_int(ud->prefs, "LoggingLevel");
+    ghb_log_level_set(level);
+}
+
 G_MODULE_EXPORT void
 use_m4v_changed_cb(GtkWidget *widget, signal_user_data_t *ud)
 {
index e66881fad4d2abc25ad0e3ac87de058505a29dc6..6b886d6c1c15b9393c74551c3bb4d00f8388ac4d 100644 (file)
@@ -7444,7 +7444,7 @@ This file may be reloaded at a later time to edit your jobs and re-encode.</prop
                                     <property name="width_request">55</property>
                                     <property name="visible">True</property>
                                     <property name="can_focus">False</property>
-                                    <signal name="changed" handler="pref_changed_cb" swapped="no"/>
+                                    <signal name="changed" handler="log_level_changed_cb" swapped="no"/>
                                   </object>
                                   <packing>
                                     <property name="expand">False</property>
index 9a3cf537dcc523af180001e94b7f4fa1d40e8c4c..8a153c978fd62e59c53eb7681424ff1f3dfa4160 100644 (file)
@@ -7450,7 +7450,7 @@ This file may be reloaded at a later time to edit your jobs and re-encode.</prop
                                     <property name="width_request">55</property>
                                     <property name="visible">True</property>
                                     <property name="can_focus">False</property>
-                                    <signal name="changed" handler="pref_changed_cb" swapped="no"/>
+                                    <signal name="changed" handler="log_level_changed_cb" swapped="no"/>
                                   </object>
                                   <packing>
                                     <property name="expand">False</property>
index add5b6c6c72d799db54f6d56d26dd60f7263497e..03524f78efcc0e16c0774e3d0c1b61972e8b7afd 100644 (file)
@@ -7444,7 +7444,7 @@ This file may be reloaded at a later time to edit your jobs and re-encode.</prop
                                     <property name="width_request">55</property>
                                     <property name="visible">True</property>
                                     <property name="can_focus">False</property>
-                                    <signal name="changed" handler="pref_changed_cb" swapped="no"/>
+                                    <signal name="changed" handler="log_level_changed_cb" swapped="no"/>
                                   </object>
                                   <packing>
                                     <property name="expand">False</property>
index ecb33f791929e4f3f4204a0bed2df7049b82c6e6..839b4e0524f56875d7eca90bdb60a113d22d7665 100644 (file)
@@ -149,6 +149,7 @@ static options_map_t d_logging_opts[] =
     {"0", "0", 0, "0"},
     {"1", "1", 1, "1"},
     {"2", "2", 2, "2"},
+    {"3", "3", 3, "3"},
 };
 combo_opts_t logging_opts =
 {
@@ -2865,6 +2866,14 @@ ghb_backend_init(gint debug)
     h_live = hb_init( debug, 0 );
 }
 
+void
+ghb_log_level_set(int level)
+{
+    hb_log_level_set(h_scan, level);
+    hb_log_level_set(h_queue, level);
+    hb_log_level_set(h_live, level);
+}
+
 void
 ghb_backend_close()
 {
index 940a4340ad9d7a9f02026dcf7ce0f2a46f81a462..42fefe9655d626d2d4bc744d1a1cf35bba441ba5 100644 (file)
@@ -89,6 +89,7 @@ float ghb_vquality_default(signal_user_data_t *ud);
 
 void ghb_combo_init(signal_user_data_t *ud);
 void ghb_backend_init(gint debug);
+void ghb_log_level_set(int level);
 void ghb_backend_close(void);
 void ghb_add_job(hb_handle_t *h, GhbValue *js, gint unique_id);
 void ghb_remove_job(gint unique_id);
index dae8d42b587c698521f9eafb427c97a811a94795..6b78594617eb4bd586f336129fdd9ea308bb5a23 100644 (file)
@@ -2839,12 +2839,6 @@ void hb_valog( hb_debug_level_t level, const char * prefix, const char * log, va
     struct tm * now;
     char        preamble[362];
 
-    if( !getenv( "HB_DEBUG" ) )
-    {
-        /* We don't want to print it */
-        return;
-    }
-
     if( global_verbosity_level < level )
     {
         /* Hiding message */
index 2512c45689006496db36b2de410411cf0f76fc16..33fe4200753a426a224e882e1c3ff2907c5a2074 100644 (file)
@@ -377,92 +377,56 @@ void hb_register_logger( void (*log_cb)(const char* message) )
     hb_thread_init("ioredirect", redirect_thread_func, NULL, HB_NORMAL_PRIORITY);
 }
 
-/**
- * libhb initialization routine.
- * @param verbose HB_DEBUG_NONE or HB_DEBUG_ALL.
- * @param update_check signals libhb to check for updated version from HandBrake website.
- * @return Handle to hb_handle_t for use on all subsequent calls to libhb.
- */
-hb_handle_t * hb_init( int verbose, int update_check )
+void hb_log_level_set(hb_handle_t *h, int level)
 {
-    hb_handle_t * h = calloc( sizeof( hb_handle_t ), 1 );
-    uint64_t      date;
+    global_verbosity_level = level;
+}
 
-    /* See hb_deep_log() and hb_log() in common.c */
-    global_verbosity_level = verbose;
-    if( verbose )
-        putenv( "HB_DEBUG=1" );
-    
-    h->id = hb_instance_counter++;
-    
-    /* Check for an update on the website if asked to */
-    h->build = -1;
+void hb_update_poll(hb_handle_t *h)
+{
+    uint64_t      date;
 
-    /* Initialize opaque for PowerManagement purposes */
-    h->system_sleep_opaque = hb_system_sleep_opaque_init();
+    hb_log( "hb_update_poll: checking for updates" );
+    date             = hb_get_date();
+    h->update_thread = hb_update_init( &h->build, h->version );
 
-    if( update_check )
+    for( ;; )
     {
-        hb_log( "hb_init: checking for updates" );
-        date             = hb_get_date();
-        h->update_thread = hb_update_init( &h->build, h->version );
-
-        for( ;; )
+        if (h->update_thread == 0)
         {
-            if( hb_thread_has_exited( h->update_thread ) )
-            {
-                /* Immediate success or failure */
-                hb_thread_close( &h->update_thread );
-                break;
-            }
-            if( hb_get_date() > date + 1000 )
-            {
-                /* Still nothing after one second. Connection problem,
-                   let the thread die */
-                hb_log( "hb_init: connection problem, not waiting for "
-                        "update_thread" );
-                break;
-            }
-            hb_snooze( 500 );
+            // Closed by thread_func
+            break;
+        }
+        if (hb_thread_has_exited(h->update_thread))
+        {
+            /* Immediate success or failure */
+            hb_thread_close( &h->update_thread );
+            break;
+        }
+        if (hb_get_date() > date + 1000)
+        {
+            /* Still nothing after one second. Connection problem,
+               let the thread die */
+            hb_log( "hb_update_poll: connection problem, not waiting for "
+                    "update_thread" );
+            break;
         }
+        hb_snooze( 500 );
     }
-
-    h->title_set.list_title = hb_list_init();
-    h->jobs       = hb_list_init();
-
-    h->state_lock  = hb_lock_init();
-    h->state.state = HB_STATE_IDLE;
-
-    h->pause_lock = hb_lock_init();
-
-    h->interjob = calloc( sizeof( hb_interjob_t ), 1 );
-
-    /* Start library thread */
-    hb_log( "hb_init: starting libhb thread" );
-    h->die         = 0;
-    h->main_thread = hb_thread_init( "libhb", thread_func, h,
-                                     HB_NORMAL_PRIORITY );
-    
-    return h;
 }
 
 /**
  * libhb initialization routine.
- * This version is to use when calling the dylib, the macro hb_init isn't available from a dylib call!
  * @param verbose HB_DEBUG_NONE or HB_DEBUG_ALL.
  * @param update_check signals libhb to check for updated version from HandBrake website.
  * @return Handle to hb_handle_t for use on all subsequent calls to libhb.
  */
-hb_handle_t * hb_init_dl( int verbose, int update_check )
+hb_handle_t * hb_init( int verbose, int update_check )
 {
     hb_handle_t * h = calloc( sizeof( hb_handle_t ), 1 );
-    uint64_t      date;
 
-    /* See hb_log() in common.c */
-    if( verbose > HB_DEBUG_NONE )
-    {
-        putenv( "HB_DEBUG=1" );
-    }
+    /* See hb_deep_log() and hb_log() in common.c */
+    hb_log_level_set(h, verbose);
 
     h->id = hb_instance_counter++;
 
@@ -474,39 +438,19 @@ hb_handle_t * hb_init_dl( int verbose, int update_check )
 
     if( update_check )
     {
-        hb_log( "hb_init: checking for updates" );
-        date             = hb_get_date();
-        h->update_thread = hb_update_init( &h->build, h->version );
-
-        for( ;; )
-        {
-            if( hb_thread_has_exited( h->update_thread ) )
-            {
-                /* Immediate success or failure */
-                hb_thread_close( &h->update_thread );
-                break;
-            }
-            if( hb_get_date() > date + 1000 )
-            {
-                /* Still nothing after one second. Connection problem,
-                   let the thread die */
-                hb_log( "hb_init: connection problem, not waiting for "
-                        "update_thread" );
-                break;
-            }
-            hb_snooze( 500 );
-        }
+        hb_update_poll(h);
     }
 
     h->title_set.list_title = hb_list_init();
     h->jobs       = hb_list_init();
-    h->current_job = NULL;
 
     h->state_lock  = hb_lock_init();
     h->state.state = HB_STATE_IDLE;
 
     h->pause_lock = hb_lock_init();
 
+    h->interjob = calloc( sizeof( hb_interjob_t ), 1 );
+
     /* Start library thread */
     hb_log( "hb_init: starting libhb thread" );
     h->die         = 0;
@@ -516,7 +460,6 @@ hb_handle_t * hb_init_dl( int verbose, int update_check )
     return h;
 }
 
-
 /**
  * Returns current version of libhb.
  * @param h Handle to hb_handle_t.
index a838c943d3df35b34ee88d93693ab264ca4cb292..cbf25f712121205dc710041a1eff202cc175d1e3 100644 (file)
@@ -31,7 +31,8 @@ extern "C" {
 void          hb_register( hb_work_object_t * );
 void          hb_register_logger( void (*log_cb)(const char* message) );
 hb_handle_t * hb_init( int verbose, int update_check );
-hb_handle_t * hb_init_dl ( int verbose, int update_check ); // hb_init for use with dylib
+void          hb_update_poll(hb_handle_t *h);
+void          hb_log_level_set(hb_handle_t *h, int level);
 
 void          hb_hwd_set_enable( hb_handle_t *h, uint8_t enable );
 int           hb_hwd_enabled( hb_handle_t *h );
index 2748ea8b7373a71be362c29ed1b2d4e85a86e513..4d72283b94057c95be511264211e42131a34cc64 100644 (file)
@@ -257,6 +257,9 @@ int main( int argc, char ** argv )
     hb_global_init();
     hb_presets_builtin_update();
 
+    /* Init libhb */
+    h = hb_init(4, 0);  // Show all logging until debug level is parsed
+
     // Get utf8 command line if windows
     get_argv_utf8(&argc, &argv);
 
@@ -267,11 +270,11 @@ int main( int argc, char ** argv )
         return 1;
     }
 
+    hb_log_level_set(h, debug);
+
     /* Register our error handler */
     hb_register_error_handler(&hb_cli_error_handler);
 
-    /* Init libhb */
-    h = hb_init( debug, update );
     hb_dvd_set_dvdnav( dvdnav );
 
     /* Show version */
@@ -281,6 +284,7 @@ int main( int argc, char ** argv )
     /* Check for update */
     if( update )
     {
+        hb_update_poll(h);
         if( ( build = hb_check_update( h, &version ) ) > -1 )
         {
             fprintf( stderr, "You are using an old version of "