summaryrefslogtreecommitdiff
path: root/Source/WebCore/platform/graphics/gstreamer/TrackPrivateBaseGStreamer.h
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
commit1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch)
tree46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/WebCore/platform/graphics/gstreamer/TrackPrivateBaseGStreamer.h
parent32761a6cee1d0dee366b885b7b9c777e67885688 (diff)
downloadWebKitGtk-tarball-master.tar.gz
Diffstat (limited to 'Source/WebCore/platform/graphics/gstreamer/TrackPrivateBaseGStreamer.h')
-rw-r--r--Source/WebCore/platform/graphics/gstreamer/TrackPrivateBaseGStreamer.h34
1 files changed, 23 insertions, 11 deletions
diff --git a/Source/WebCore/platform/graphics/gstreamer/TrackPrivateBaseGStreamer.h b/Source/WebCore/platform/graphics/gstreamer/TrackPrivateBaseGStreamer.h
index 1e3b8c898..8e3488497 100644
--- a/Source/WebCore/platform/graphics/gstreamer/TrackPrivateBaseGStreamer.h
+++ b/Source/WebCore/platform/graphics/gstreamer/TrackPrivateBaseGStreamer.h
@@ -29,6 +29,8 @@
#if ENABLE(VIDEO) && USE(GSTREAMER) && ENABLE(VIDEO_TRACK)
#include "GRefPtrGStreamer.h"
+#include "MainThreadNotifier.h"
+#include <wtf/Lock.h>
#include <wtf/ThreadingPrimitives.h>
#include <wtf/text/WTFString.h>
@@ -48,28 +50,38 @@ public:
void setIndex(int index) { m_index = index; }
- void activeChanged();
- void tagsChanged();
+protected:
+ TrackPrivateBaseGStreamer(TrackPrivateBase* owner, gint index, GRefPtr<GstPad>);
void notifyTrackOfActiveChanged();
void notifyTrackOfTagsChanged();
-protected:
- TrackPrivateBaseGStreamer(TrackPrivateBase* owner, gint index, GRefPtr<GstPad>);
+ enum MainThreadNotification {
+ ActiveChanged = 1 << 0,
+ TagsChanged = 1 << 1,
+ NewSample = 1 << 2,
+ StreamChanged = 1 << 3
+ };
+ Ref<MainThreadNotifier<MainThreadNotification>> m_notifier;
gint m_index;
- String m_label;
- String m_language;
+ AtomicString m_label;
+ AtomicString m_language;
GRefPtr<GstPad> m_pad;
private:
- bool getTag(GstTagList* tags, const gchar* tagName, String& value);
+ bool getLanguageCode(GstTagList* tags, AtomicString& value);
- TrackPrivateBase* m_owner;
- guint m_activeTimerHandler;
- guint m_tagTimerHandler;
+ template<class StringType>
+ bool getTag(GstTagList* tags, const gchar* tagName, StringType& value);
+
+ static void activeChangedCallback(TrackPrivateBaseGStreamer*);
+ static void tagsChangedCallback(TrackPrivateBaseGStreamer*);
- Mutex m_tagMutex;
+ void tagsChanged();
+
+ TrackPrivateBase* m_owner;
+ Lock m_tagMutex;
GRefPtr<GstTagList> m_tags;
};