Merge "translate: Skip matrix_rebuild during shutdown."
[asterisk/asterisk.git] / main / autoservice.c
index d1a0156..cd7388b 100644 (file)
@@ -58,6 +58,7 @@ struct asent {
         *  it gets stopped for the last time. */
        unsigned int use_count;
        unsigned int orig_end_dtmf_flag:1;
+       unsigned int video_update:1;
        unsigned int ignore_frame_types;
        /*! Frames go on at the head of deferred_frames, so we have the frames
         *  from newest to oldest.  As we put them at the head of the readq, we'll
@@ -161,6 +162,17 @@ static void *autoservice_run(void *ign)
                                        AST_LIST_INSERT_HEAD(&ents[i]->deferred_frames, dup_f, frame_list);
                                }
                        } else {
+                               if (defer_frame->frametype == AST_FRAME_CONTROL &&
+                                       defer_frame->subclass.integer == AST_CONTROL_VIDUPDATE) {
+
+                                       /* If a video update is already queued don't needlessly queue another */
+                                       if (ents[i]->video_update) {
+                                               ast_frfree(defer_frame);
+                                               break;
+                                       }
+
+                                       ents[i]->video_update = 1;
+                               }
                                if ((dup_f = ast_frisolate(defer_frame))) {
                                        AST_LIST_INSERT_HEAD(&ents[i]->deferred_frames, dup_f, frame_list);
                                }