[GStreamer] Extra ASSERTs at MainThreadNotifier
authorcalvaris@igalia.com <calvaris@igalia.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 6 Sep 2018 10:50:41 +0000 (10:50 +0000)
committercalvaris@igalia.com <calvaris@igalia.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 6 Sep 2018 10:50:41 +0000 (10:50 +0000)
https://bugs.webkit.org/show_bug.cgi?id=188786

Reviewed by Carlos Garcia Campos.

We add a couple of checks in debug mode: there is only one bit on
per notification and ensure a notifier was invalidated before
being destroyed.

* platform/graphics/gstreamer/MainThreadNotifier.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@235732 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/platform/graphics/gstreamer/MainThreadNotifier.h

index 79bb592..bc3b188 100644 (file)
@@ -1,3 +1,16 @@
+2018-09-06  Xabier Rodriguez Calvar  <calvaris@igalia.com>
+
+        [GStreamer] Extra ASSERTs at MainThreadNotifier
+        https://bugs.webkit.org/show_bug.cgi?id=188786
+
+        Reviewed by Carlos Garcia Campos.
+
+        We add a couple of checks in debug mode: there is only one bit on
+        per notification and ensure a notifier was invalidated before
+        being destroyed.
+
+        * platform/graphics/gstreamer/MainThreadNotifier.h:
+
 2018-09-05  Youenn Fablet  <youenn@apple.com>
 
         Move ownership of outgoing source to RTCRtpSender backend
index 3752dc2..5eada63 100644 (file)
@@ -35,10 +35,17 @@ public:
         return adoptRef(*new MainThreadNotifier());
     }
 
+    ~MainThreadNotifier()
+    {
+        ASSERT(!m_isValid.load());
+    }
+
     template<typename F>
     void notify(T notificationType, F&& callbackFunctor)
     {
         ASSERT(m_isValid.load());
+        // Assert that there is only one bit on at a time.
+        ASSERT(!(static_cast<int>(notificationType) & (static_cast<int>(notificationType) - 1)));
         if (isMainThread()) {
             removePendingNotification(notificationType);
             callbackFunctor();