(closes issue #13557)
[asterisk/asterisk.git] / channels / console_video.c
index a68a930..88bf807 100644 (file)
@@ -272,7 +272,7 @@ void fbuf_free(struct fbuf_t *b)
 
        if (b->data && b->size)
                ast_free(b->data);
-       bzero(b, sizeof(*b));
+       memset(b, '\0', sizeof(*b));
        /* restore some fields */
        b->w = x.w;
        b->h = x.h;
@@ -284,7 +284,7 @@ void fbuf_free(struct fbuf_t *b)
  */
 int get_gui_startup(struct video_desc* env)
 {
-       return env->stayopen;
+       return env ? env->stayopen : 0;
 }
 
 #if 0
@@ -587,7 +587,7 @@ static AVPicture *fill_pict(struct fbuf_t *b, AVPicture *p)
        int luv = b->w/2;       /* U/V linesize, bytes */
        int sample_size = 1;
        
-       bzero(p, sizeof(*p));
+       memset(p, '\0', sizeof(*p));
        switch (b->pix_fmt) {
        case PIX_FMT_RGB555:
        case PIX_FMT_RGB565:
@@ -892,9 +892,11 @@ static void *video_thread(void *arg)
        video_out_init(env);
 
        /* Writes intial status of the sources. */
-       for (i = 0; i < env->out.device_num; i++) {
+       if (env->gui) {
+           for (i = 0; i < env->out.device_num; i++) {
                print_message(env->gui->thumb_bd_array[i].board,
                 src_msgs[env->out.devices[i].status_index]);
+           }
        }
 
        for (;;) {
@@ -1085,10 +1087,9 @@ void console_video_start(struct video_desc *env, struct ast_channel *owner)
                env->out.bitrate = 65000;
                ast_log(LOG_WARNING, "bitrate unset, forcing to %d\n", env->out.bitrate);
        }
-       /* XXX below probably can use ast_pthread_create_detace\hed() */
-       ast_pthread_create_background(&env->vthread, NULL, video_thread, env);
-       /* detach the thread to make sure memory is freed on termination */
-       pthread_detach(env->vthread);
+       /* create the thread as detached so memory is freed on termination */
+       ast_pthread_create_detached_background(&env->vthread,
+               NULL, video_thread, env);
 }
 
 /*