rendered paste bodyIndex: libhb/hb.c===================================================================--- libhb/hb.c (revision 1116)+++ libhb/hb.c (working copy)@@ -691,12 +691,10 @@ return( h->current_job ); } -/**- * Adds a job to the job list.- * @param h Handle to hb_handle_t.- * @param job Handle to hb_job_t.+/*+ * Copy the full job and title and return the copied job. */-void hb_add( hb_handle_t * h, hb_job_t * job )+hb_job_t *hb_copy( hb_job_t * job ) { hb_job_t * job_copy; hb_title_t * title, * title_copy;@@ -903,8 +901,6 @@ title_copy->job = job_copy; job_copy->title = title_copy; job_copy->file = strdup( job->file );- job_copy->h = h;- job_copy->pause = h->pause_lock; /* Copy the job filter list */ if( job->filters )@@ -918,14 +914,51 @@ hb_list_add( job_copy->filters, filter ); } }- - /* Add the job to the list */- hb_list_add( h->jobs, job_copy );- h->job_count = hb_count(h);- h->job_count_permanent++;+ return( job_copy ); } /**+ * Adds a job to the job list.+ * @param h Handle to hb_handle_t.+ * @param job Handle to hb_job_t, it will be copied before use.+ */+void hb_add( hb_handle_t * h, hb_job_t * job )+{+ hb_job_t * job_copy;++ job_copy = hb_copy( job );++ job_copy->h = h;+ job_copy->pause = h->pause_lock;++ if( job_copy )+ {+ /* Add the job to the list */+ hb_list_add( h->jobs, job_copy );+ h->job_count = hb_count(h);+ h->job_count_permanent++;+ }+}++/**+ * Submits a job to the job list.+ * @param h Handle to hb_handle_t.+ * @param job Handle to hb_job_t.+ */+void hb_submit( hb_handle_t * h, hb_job_t * job )+{+ job->h = h;+ job->pause = h->pause_lock;++ if( job )+ {+ /* Add the job to the list */+ hb_list_add( h->jobs, job );+ h->job_count = hb_count(h);+ h->job_count_permanent++;+ }+}+/** * Removes a job from the job list. * @param h Handle to hb_handle_t. * @param job Handle to hb_job_t.Index: libhb/hb.h===================================================================--- libhb/hb.h (revision 1116)+++ libhb/hb.h (working copy)@@ -86,6 +86,8 @@ hb_job_t * hb_current_job( hb_handle_t * h ); void hb_add( hb_handle_t *, hb_job_t * ); void hb_rem( hb_handle_t *, hb_job_t * );+void hb_submit( hb_handle_t *, hb_job_t * );+hb_job_t * hb_copy( hb_job_t * ); void hb_start( hb_handle_t * ); void hb_pause( hb_handle_t * );