diff --git a/gstcefsrc.cc b/gstcefsrc.cc index 09c514d..8cea7ab 100644 --- a/gstcefsrc.cc +++ b/gstcefsrc.cc @@ -15,7 +15,6 @@ #include #include #include -#include #include "gstcefsrc.h" #include "gstcefaudiometa.h" @@ -907,6 +906,7 @@ gst_cef_src_start(GstBaseSrc *base_src) GST_OBJECT_LOCK (src); src->n_frames = 0; + src->client = browserClient; GST_OBJECT_UNLOCK (src); GST_ELEMENT_PROGRESS(src, CONTINUE, "open", ("Creating CEF browser ...")); @@ -967,6 +967,8 @@ gst_cef_src_stop (GstBaseSrc *base_src) { GstCefSrc *src = GST_CEF_SRC (base_src); + GST_OBJECT_LOCK (src); + GST_INFO_OBJECT (src, "Stopping"); if (src->browser) { @@ -986,6 +988,8 @@ gst_cef_src_stop (GstBaseSrc *base_src) gst_buffer_replace (&src->current_buffer, NULL); + GST_OBJECT_UNLOCK (src); + return TRUE; } @@ -1236,6 +1240,9 @@ gst_cef_src_finalize (GObject *object) g_free (src->js_flags); g_free (src->cef_cache_location); + // free client + src->client->Release(); + g_cond_clear(&src->state_cond); g_mutex_clear(&src->state_lock); } diff --git a/gstcefsrc.h b/gstcefsrc.h index e7c46ee..8bd032f 100644 --- a/gstcefsrc.h +++ b/gstcefsrc.h @@ -2,6 +2,7 @@ #define __GST_CEF_SRC_H__ #include "include/cef_browser_process_handler.h" +#include "include/internal/cef_ptr.h" #include #include #include @@ -11,7 +12,7 @@ #include #include #include - +#include G_BEGIN_DECLS @@ -61,7 +62,7 @@ struct _GstCefSrc { gboolean listen_for_js_signals; gint chromium_debug_port; CefRefPtr browser; - CefRefPtr app; + CefRefPtr client; GCond state_cond; GMutex state_lock;