[SCM] WebKit Debian packaging branch, webkit-1.3, updated. upstream/1.3.7-4207-g178b198

philn at webkit.org philn at webkit.org
Sun Feb 20 22:51:03 UTC 2011


The following commit has been merged in the webkit-1.3 branch:
commit 9418a1d87756655626f78362b803d7c4c13fffac
Author: philn at webkit.org <philn at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Wed Jan 12 09:08:23 2011 +0000

    2011-01-11  Philippe Normand  <pnormand at igalia.com>
    
            Reviewed by Eric Carlson.
    
            [GStreamer] PlatformVideoWindowMac implementation
            https://bugs.webkit.org/show_bug.cgi?id=50770
    
            This new implementation will be used on Mac OS to display the
            fullscreen video window with the GStreamer-based media player.
    
            * platform/graphics/gstreamer/GStreamerGWorld.cpp:
            (WebCore::gstGWorldSyncMessageCallback):
            * platform/graphics/gstreamer/PlatformVideoWindow.h:
            (WebCore::PlatformVideoWindow::window):
            * platform/graphics/gstreamer/PlatformVideoWindowMac.mm:
            (PlatformVideoWindow::PlatformVideoWindow):
            (PlatformVideoWindow::~PlatformVideoWindow):
            (PlatformVideoWindow::prepareForOverlay):
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@75590 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog
index 16d8bac..d33e9e1 100644
--- a/Source/WebCore/ChangeLog
+++ b/Source/WebCore/ChangeLog
@@ -1,3 +1,22 @@
+2011-01-11  Philippe Normand  <pnormand at igalia.com>
+
+        Reviewed by Eric Carlson.
+
+        [GStreamer] PlatformVideoWindowMac implementation
+        https://bugs.webkit.org/show_bug.cgi?id=50770
+
+        This new implementation will be used on Mac OS to display the
+        fullscreen video window with the GStreamer-based media player.
+
+        * platform/graphics/gstreamer/GStreamerGWorld.cpp:
+        (WebCore::gstGWorldSyncMessageCallback):
+        * platform/graphics/gstreamer/PlatformVideoWindow.h:
+        (WebCore::PlatformVideoWindow::window):
+        * platform/graphics/gstreamer/PlatformVideoWindowMac.mm:
+        (PlatformVideoWindow::PlatformVideoWindow):
+        (PlatformVideoWindow::~PlatformVideoWindow):
+        (PlatformVideoWindow::prepareForOverlay):
+
 2011-01-11  Simon Fraser  <simon.fraser at apple.com>
 
         Reviewed by Dan Bernstein.
diff --git a/Source/WebCore/platform/graphics/gstreamer/GStreamerGWorld.cpp b/Source/WebCore/platform/graphics/gstreamer/GStreamerGWorld.cpp
index d179601..a4b20be 100644
--- a/Source/WebCore/platform/graphics/gstreamer/GStreamerGWorld.cpp
+++ b/Source/WebCore/platform/graphics/gstreamer/GStreamerGWorld.cpp
@@ -43,7 +43,8 @@ gboolean gstGWorldSyncMessageCallback(GstBus* bus, GstMessage* message, gpointer
 
     GStreamerGWorld* gstGWorld = static_cast<GStreamerGWorld*>(data);
 
-    if (gst_structure_has_name(message->structure, "prepare-xwindow-id"))
+    if (gst_structure_has_name(message->structure, "prepare-xwindow-id")
+        || gst_structure_has_name(message->structure, "have-ns-view"))
         gstGWorld->setWindowOverlay(message);
     return TRUE;
 }
diff --git a/Source/WebCore/platform/graphics/gstreamer/PlatformVideoWindow.h b/Source/WebCore/platform/graphics/gstreamer/PlatformVideoWindow.h
index f2a3ff2..d71e6d3 100644
--- a/Source/WebCore/platform/graphics/gstreamer/PlatformVideoWindow.h
+++ b/Source/WebCore/platform/graphics/gstreamer/PlatformVideoWindow.h
@@ -25,6 +25,10 @@
 #include <wtf/PassRefPtr.h>
 #include <wtf/RefCounted.h>
 
+#if PLATFORM(MAC)
+#include <wtf/RetainPtr.h>
+#endif
+
 typedef struct _GstMessage GstMessage;
 
 namespace WebCore {
@@ -38,13 +42,22 @@ class PlatformVideoWindow : public RefCounted<PlatformVideoWindow> {
 
 
         void prepareForOverlay(GstMessage*);
+#if !PLATFORM(MAC)
         PlatformWidget window() const { return m_window; }
+#else
+        PlatformWidget window() const { return m_window.get(); }
+#endif
         unsigned long videoWindowId() const { return m_videoWindowId; }
 
     private:
         unsigned long m_videoWindowId;
         PlatformWidget m_videoWindow;
+#if !PLATFORM(MAC)
         PlatformWidget m_window;
+#else
+        RetainPtr<NSView> m_window;
+#endif
+
     };
 }
 
diff --git a/Source/WebCore/platform/graphics/gstreamer/PlatformVideoWindowMac.mm b/Source/WebCore/platform/graphics/gstreamer/PlatformVideoWindowMac.mm
new file mode 100644
index 0000000..e98cf9b
--- /dev/null
+++ b/Source/WebCore/platform/graphics/gstreamer/PlatformVideoWindowMac.mm
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2011 Igalia S.L
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include "config.h"
+#include "PlatformVideoWindow.h"
+
+#if USE(GSTREAMER)
+
+#include <gst/gst.h>
+
+using namespace WebCore;
+
+PlatformVideoWindow::PlatformVideoWindow()
+{
+    m_window.adoptNS([[NSView alloc] init]);
+    m_videoWindowId = reinterpret_cast<unsigned long>(m_window.get());
+}
+
+PlatformVideoWindow::~PlatformVideoWindow()
+{
+    m_videoWindowId = 0;
+}
+
+void PlatformVideoWindow::prepareForOverlay(GstMessage* message)
+{
+    if (gst_structure_has_name(message->structure, "have-ns-view")) {
+        m_videoWindow = static_cast<PlatformWidget>(g_value_get_pointer(gst_structure_get_value(message->structure, "nsview")));
+        ASSERT(m_videoWindow);
+        [m_window.get() addSubview:m_videoWindow];
+    }
+}
+
+#endif // USE(GSTREAMER)

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list