Changeset 252918 in webkit


Ignore:
Timestamp:
Nov 28, 2019 4:52:36 AM (4 years ago)
Author:
Philippe Normand
Message:

[GStreamer] Convert GLVideoSink and WebKitWebSrc to WEBKIT_DEFINE_TYPE
https://bugs.webkit.org/show_bug.cgi?id=204674

Reviewed by Carlos Garcia Campos.

This is mostly a refactoring, simplifying the code-base a bit.

  • platform/graphics/gstreamer/GLVideoSinkGStreamer.cpp:

(webKitGLVideoSinkConstructed):
(webKitGLVideoSinkFinalize):
(webkit_gl_video_sink_class_init):

  • platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:

(webkit_web_src_class_init):
(webKitWebSrcConstructed):

Location:
trunk/Source/WebCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r252917 r252918  
     12019-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
    1182019-11-28  Philippe Normand  <pnormand@igalia.com>
    219
  • trunk/Source/WebCore/platform/graphics/gstreamer/GLVideoSinkGStreamer.cpp

    r252917 r252918  
    2626#include "GStreamerCommon.h"
    2727#include "MediaPlayerPrivateGStreamer.h"
     28#include <gst/app/gstappsink.h>
     29#include <wtf/glib/WTFGType.h>
    2830
    2931#if USE(GLX)
     
    5456#undef None
    5557#endif // PLATFORM(X11) && GST_GL_HAVE_PLATFORM_EGL
    56 
    57 #include <gst/app/gstappsink.h>
    5858
    5959using namespace WebCore;
     
    7474static GstStaticPadTemplate sinkTemplate = GST_STATIC_PAD_TEMPLATE("sink", GST_PAD_SINK, GST_PAD_ALWAYS, GST_STATIC_CAPS_ANY);
    7575
    76 #define WEBKIT_GL_VIDEO_SINK_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), WEBKIT_TYPE_GL_VIDEO_SINK, WebKitGLVideoSinkPrivate))
    77 
    7876#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();
     77WEBKIT_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
     80static void webKitGLVideoSinkConstructed(GObject* object)
     81{
     82    GST_CALL_PARENT(G_OBJECT_CLASS, constructed, (object));
     83
     84    WebKitGLVideoSink* sink = WEBKIT_GL_VIDEO_SINK(object);
    8685
    8786    sink->priv->appSink = gst_element_factory_make("appsink", "webkit-gl-video-appsink");
     
    125124void webKitGLVideoSinkFinalize(GObject* object)
    126125{
    127     ASSERT(WTF::isMainThread());
     126    ASSERT(isMainThread());
    128127
    129128    WebKitGLVideoSink* sink = WEBKIT_GL_VIDEO_SINK(object);
     
    132131    if (priv->mediaPlayerPrivate)
    133132        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();
    137133
    138134    GST_CALL_PARENT(G_OBJECT_CLASS, finalize, (object));
     
    295291    GstElementClass* elementClass = GST_ELEMENT_CLASS(klass);
    296292
     293    objectClass->constructed = webKitGLVideoSinkConstructed;
    297294    objectClass->finalize = webKitGLVideoSinkFinalize;
    298295
    299296    gst_element_class_add_pad_template(elementClass, gst_static_pad_template_get(&sinkTemplate));
    300 
    301297    gst_element_class_set_static_metadata(elementClass, "WebKit GL video sink", "Sink/Video", "Renders video", "Philippe Normand <philn@igalia.com>");
    302298
    303299    elementClass->change_state = GST_DEBUG_FUNCPTR(webKitGLVideoSinkChangeState);
    304     g_type_class_add_private(klass, sizeof(WebKitGLVideoSinkPrivate));
    305300}
    306301
  • trunk/Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp

    r252398 r252918  
    3535#include <wtf/Condition.h>
    3636#include <wtf/Scope.h>
     37#include <wtf/glib/WTFGType.h>
    3738#include <wtf/text/CString.h>
    3839
     
    9192};
    9293
    93 #define WEBKIT_WEB_SRC_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), WEBKIT_TYPE_WEB_SRC, WebKitWebSrcPrivate))
    9494struct _WebKitWebSrcPrivate {
    9595    ~_WebKitWebSrcPrivate()
     
    165165static void webKitWebSrcUriHandlerInit(gpointer gIface, gpointer ifaceData);
    166166
    167 static void webKitWebSrcDispose(GObject*);
     167static void webKitWebSrcConstructed(GObject*);
    168168static void webKitWebSrcSetProperty(GObject*, guint propertyID, const GValue*, GParamSpec*);
    169169static void webKitWebSrcGetProperty(GObject*, guint propertyID, GValue*, GParamSpec*);
     
    182182
    183183#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,
     184WEBKIT_DEFINE_TYPE_WITH_CODE(WebKitWebSrc, webkit_web_src, GST_TYPE_PUSH_SRC,
    187185    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)
    189188
    190189static void webkit_web_src_class_init(WebKitWebSrcClass* klass)
     
    192191    GObjectClass* oklass = G_OBJECT_CLASS(klass);
    193192
    194     oklass->dispose = webKitWebSrcDispose;
     193    oklass->constructed = webKitWebSrcConstructed;
    195194    oklass->set_property = webKitWebSrcSetProperty;
    196195    oklass->get_property = webKitWebSrcGetProperty;
     
    243242    GstPushSrcClass* pushSrcClass = GST_PUSH_SRC_CLASS(klass);
    244243    pushSrcClass->create = GST_DEBUG_FUNCPTR(webKitWebSrcCreate);
    245 
    246     g_type_class_add_private(klass, sizeof(WebKitWebSrcPrivate));
    247 }
    248 
     244}
    249245
    250246static void webkitWebSrcReset(WebKitWebSrc* src)
    251247{
    252     WebKitWebSrcPrivate* priv = WEBKIT_WEB_SRC_GET_PRIVATE(src);
     248    WebKitWebSrcPrivate* priv = src->priv;
    253249
    254250    GST_DEBUG_OBJECT(src, "Resetting internal state");
     
    262258}
    263259
    264 static void webkit_web_src_init(WebKitWebSrc* src)
    265 {
    266     WebKitWebSrcPrivate* priv = WEBKIT_WEB_SRC_GET_PRIVATE(src);
    267 
    268     src->priv = priv;
    269     new (priv) WebKitWebSrcPrivate();
     260static 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;
    270266
    271267    priv->notifier = MainThreadNotifier<MainThreadSourceNotification>::create();
     
    276272    gst_base_src_set_automatic_eos(GST_BASE_SRC_CAST(src), FALSE);
    277273    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));
    287274}
    288275
Note: See TracChangeset for help on using the changeset viewer.