Changeset 252918 in webkit
- Timestamp:
- Nov 28, 2019 4:52:36 AM (4 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r252917 r252918 1 2019-11-28 Philippe Normand <pnormand@igalia.com> 2 3 [GStreamer] Convert GLVideoSink and WebKitWebSrc to WEBKIT_DEFINE_TYPE 4 https://bugs.webkit.org/show_bug.cgi?id=204674 5 6 Reviewed by Carlos Garcia Campos. 7 8 This is mostly a refactoring, simplifying the code-base a bit. 9 10 * platform/graphics/gstreamer/GLVideoSinkGStreamer.cpp: 11 (webKitGLVideoSinkConstructed): 12 (webKitGLVideoSinkFinalize): 13 (webkit_gl_video_sink_class_init): 14 * platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp: 15 (webkit_web_src_class_init): 16 (webKitWebSrcConstructed): 17 1 18 2019-11-28 Philippe Normand <pnormand@igalia.com> 2 19 -
trunk/Source/WebCore/platform/graphics/gstreamer/GLVideoSinkGStreamer.cpp
r252917 r252918 26 26 #include "GStreamerCommon.h" 27 27 #include "MediaPlayerPrivateGStreamer.h" 28 #include <gst/app/gstappsink.h> 29 #include <wtf/glib/WTFGType.h> 28 30 29 31 #if USE(GLX) … … 54 56 #undef None 55 57 #endif // PLATFORM(X11) && GST_GL_HAVE_PLATFORM_EGL 56 57 #include <gst/app/gstappsink.h>58 58 59 59 using namespace WebCore; … … 74 74 static GstStaticPadTemplate sinkTemplate = GST_STATIC_PAD_TEMPLATE("sink", GST_PAD_SINK, GST_PAD_ALWAYS, GST_STATIC_CAPS_ANY); 75 75 76 #define WEBKIT_GL_VIDEO_SINK_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), WEBKIT_TYPE_GL_VIDEO_SINK, WebKitGLVideoSinkPrivate))77 78 76 #define webkit_gl_video_sink_parent_class parent_class 79 #define WEBKIT_GL_VIDEO_SINK_CATEGORY_INIT GST_DEBUG_CATEGORY_INIT(webkit_gl_video_sink_debug, "webkitglvideosink", 0, "GL video sink element"); 80 G_DEFINE_TYPE_WITH_CODE(WebKitGLVideoSink, webkit_gl_video_sink, GST_TYPE_BIN, WEBKIT_GL_VIDEO_SINK_CATEGORY_INIT); 81 82 static void webkit_gl_video_sink_init(WebKitGLVideoSink* sink) 83 { 84 sink->priv = WEBKIT_GL_VIDEO_SINK_GET_PRIVATE(sink); 85 new (sink->priv) WebKitGLVideoSinkPrivate(); 77 WEBKIT_DEFINE_TYPE_WITH_CODE(WebKitGLVideoSink, webkit_gl_video_sink, GST_TYPE_BIN, 78 GST_DEBUG_CATEGORY_INIT(webkit_gl_video_sink_debug, "webkitglvideosink", 0, "GL video sink element")) 79 80 static void webKitGLVideoSinkConstructed(GObject* object) 81 { 82 GST_CALL_PARENT(G_OBJECT_CLASS, constructed, (object)); 83 84 WebKitGLVideoSink* sink = WEBKIT_GL_VIDEO_SINK(object); 86 85 87 86 sink->priv->appSink = gst_element_factory_make("appsink", "webkit-gl-video-appsink"); … … 125 124 void webKitGLVideoSinkFinalize(GObject* object) 126 125 { 127 ASSERT( WTF::isMainThread());126 ASSERT(isMainThread()); 128 127 129 128 WebKitGLVideoSink* sink = WEBKIT_GL_VIDEO_SINK(object); … … 132 131 if (priv->mediaPlayerPrivate) 133 132 g_signal_handlers_disconnect_by_data(priv->appSink.get(), priv->mediaPlayerPrivate); 134 135 // We used a placement new for construction, the destructor won't be called automatically.136 priv->~_WebKitGLVideoSinkPrivate();137 133 138 134 GST_CALL_PARENT(G_OBJECT_CLASS, finalize, (object)); … … 295 291 GstElementClass* elementClass = GST_ELEMENT_CLASS(klass); 296 292 293 objectClass->constructed = webKitGLVideoSinkConstructed; 297 294 objectClass->finalize = webKitGLVideoSinkFinalize; 298 295 299 296 gst_element_class_add_pad_template(elementClass, gst_static_pad_template_get(&sinkTemplate)); 300 301 297 gst_element_class_set_static_metadata(elementClass, "WebKit GL video sink", "Sink/Video", "Renders video", "Philippe Normand <philn@igalia.com>"); 302 298 303 299 elementClass->change_state = GST_DEBUG_FUNCPTR(webKitGLVideoSinkChangeState); 304 g_type_class_add_private(klass, sizeof(WebKitGLVideoSinkPrivate));305 300 } 306 301 -
trunk/Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp
r252398 r252918 35 35 #include <wtf/Condition.h> 36 36 #include <wtf/Scope.h> 37 #include <wtf/glib/WTFGType.h> 37 38 #include <wtf/text/CString.h> 38 39 … … 91 92 }; 92 93 93 #define WEBKIT_WEB_SRC_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), WEBKIT_TYPE_WEB_SRC, WebKitWebSrcPrivate))94 94 struct _WebKitWebSrcPrivate { 95 95 ~_WebKitWebSrcPrivate() … … 165 165 static void webKitWebSrcUriHandlerInit(gpointer gIface, gpointer ifaceData); 166 166 167 static void webKitWebSrc Dispose(GObject*);167 static void webKitWebSrcConstructed(GObject*); 168 168 static void webKitWebSrcSetProperty(GObject*, guint propertyID, const GValue*, GParamSpec*); 169 169 static void webKitWebSrcGetProperty(GObject*, guint propertyID, GValue*, GParamSpec*); … … 182 182 183 183 #define webkit_web_src_parent_class parent_class 184 // We split this out into another macro to avoid a check-webkit-style error. 185 #define WEBKIT_WEB_SRC_CATEGORY_INIT GST_DEBUG_CATEGORY_INIT(webkit_web_src_debug, "webkitwebsrc", 0, "websrc element"); 186 G_DEFINE_TYPE_WITH_CODE(WebKitWebSrc, webkit_web_src, GST_TYPE_PUSH_SRC, 184 WEBKIT_DEFINE_TYPE_WITH_CODE(WebKitWebSrc, webkit_web_src, GST_TYPE_PUSH_SRC, 187 185 G_IMPLEMENT_INTERFACE(GST_TYPE_URI_HANDLER, webKitWebSrcUriHandlerInit); 188 WEBKIT_WEB_SRC_CATEGORY_INIT); 186 GST_DEBUG_CATEGORY_INIT(webkit_web_src_debug, "webkitwebsrc", 0, "websrc element"); 187 ) 189 188 190 189 static void webkit_web_src_class_init(WebKitWebSrcClass* klass) … … 192 191 GObjectClass* oklass = G_OBJECT_CLASS(klass); 193 192 194 oklass-> dispose = webKitWebSrcDispose;193 oklass->constructed = webKitWebSrcConstructed; 195 194 oklass->set_property = webKitWebSrcSetProperty; 196 195 oklass->get_property = webKitWebSrcGetProperty; … … 243 242 GstPushSrcClass* pushSrcClass = GST_PUSH_SRC_CLASS(klass); 244 243 pushSrcClass->create = GST_DEBUG_FUNCPTR(webKitWebSrcCreate); 245 246 g_type_class_add_private(klass, sizeof(WebKitWebSrcPrivate)); 247 } 248 244 } 249 245 250 246 static void webkitWebSrcReset(WebKitWebSrc* src) 251 247 { 252 WebKitWebSrcPrivate* priv = WEBKIT_WEB_SRC_GET_PRIVATE(src);248 WebKitWebSrcPrivate* priv = src->priv; 253 249 254 250 GST_DEBUG_OBJECT(src, "Resetting internal state"); … … 262 258 } 263 259 264 static void web kit_web_src_init(WebKitWebSrc* src)265 { 266 WebKitWebSrcPrivate* priv = WEBKIT_WEB_SRC_GET_PRIVATE(src);267 268 src->priv = priv;269 new (priv) WebKitWebSrcPrivate();260 static void webKitWebSrcConstructed(GObject* object) 261 { 262 GST_CALL_PARENT(G_OBJECT_CLASS, constructed, (object)); 263 264 WebKitWebSrc* src = WEBKIT_WEB_SRC(object); 265 WebKitWebSrcPrivate* priv = src->priv; 270 266 271 267 priv->notifier = MainThreadNotifier<MainThreadSourceNotification>::create(); … … 276 272 gst_base_src_set_automatic_eos(GST_BASE_SRC_CAST(src), FALSE); 277 273 gst_base_src_set_async(GST_BASE_SRC_CAST(src), TRUE); 278 }279 280 static void webKitWebSrcDispose(GObject* object)281 {282 WebKitWebSrcPrivate* priv = WEBKIT_WEB_SRC(object)->priv;283 284 priv->~WebKitWebSrcPrivate();285 286 GST_CALL_PARENT(G_OBJECT_CLASS, dispose, (object));287 274 } 288 275
Note: See TracChangeset
for help on using the changeset viewer.