[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