ximage: allow per feature registration
authorStéphane Cerveau <scerveau@collabora.com>
Mon, 29 Mar 2021 12:09:16 +0000 (14:09 +0200)
committerStéphane Cerveau <scerveau@collabora.com>
Mon, 29 Mar 2021 13:59:53 +0000 (15:59 +0200)
Split plugin into features including
dynamic types which can be indiviually
registered during a static build.

More details here:

https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1089>

sys/ximage/ximage.c
sys/ximage/ximagepool.c
sys/ximage/ximagesink.c
sys/ximage/ximagesink.h

index 4ccaa7f..0a48c89 100644 (file)
 
 #include "ximagesink.h"
 
-GST_DEBUG_CATEGORY (gst_debug_x_image_pool);
-GST_DEBUG_CATEGORY (gst_debug_x_image_sink);
-GST_DEBUG_CATEGORY (CAT_PERFORMANCE);
 
 static gboolean
 plugin_init (GstPlugin * plugin)
 {
-  if (!gst_element_register (plugin, "ximagesink",
-          GST_RANK_SECONDARY, GST_TYPE_X_IMAGE_SINK))
-    return FALSE;
-
-  GST_DEBUG_CATEGORY_INIT (gst_debug_x_image_sink, "ximagesink", 0,
-      "ximagesink element");
-  GST_DEBUG_CATEGORY_INIT (gst_debug_x_image_pool, "ximagepool", 0,
-      "ximagepool object");
-
-  GST_DEBUG_CATEGORY_GET (CAT_PERFORMANCE, "GST_PERFORMANCE");
-
-  return TRUE;
+  return GST_ELEMENT_REGISTER (ximagesink, plugin);
 }
 
 GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
index 3f95e84..4d3871d 100644 (file)
@@ -32,7 +32,7 @@
 #include <gst/video/gstvideometa.h>
 #include <gst/video/gstvideopool.h>
 
-GST_DEBUG_CATEGORY_EXTERN (gst_debug_x_image_pool);
+GST_DEBUG_CATEGORY (gst_debug_x_image_pool);
 #define GST_CAT_DEFAULT gst_debug_x_image_pool
 
 /* X11 stuff */
index f1bab94..07b7f17 100644 (file)
 /* for XkbKeycodeToKeysym */
 #include <X11/XKBlib.h>
 
-GST_DEBUG_CATEGORY_EXTERN (gst_debug_x_image_sink);
-GST_DEBUG_CATEGORY_EXTERN (CAT_PERFORMANCE);
+GST_DEBUG_CATEGORY_EXTERN (gst_debug_x_image_pool);
+GST_DEBUG_CATEGORY (gst_debug_x_image_sink);
+GST_DEBUG_CATEGORY_STATIC (CAT_PERFORMANCE);
+
 #define GST_CAT_DEFAULT gst_debug_x_image_sink
 
 typedef struct
@@ -179,6 +181,13 @@ G_DEFINE_TYPE_WITH_CODE (GstXImageSink, gst_x_image_sink, GST_TYPE_VIDEO_SINK,
     G_IMPLEMENT_INTERFACE (GST_TYPE_VIDEO_OVERLAY,
         gst_x_image_sink_video_overlay_init));
 
+#define _do_init \
+  GST_DEBUG_CATEGORY_INIT (gst_debug_x_image_sink, "ximagesink", 0, "ximagesink element");\
+  GST_DEBUG_CATEGORY_INIT (gst_debug_x_image_pool, "ximagepool", 0, "ximagepool object");\
+  GST_DEBUG_CATEGORY_GET (CAT_PERFORMANCE, "GST_PERFORMANCE");
+GST_ELEMENT_REGISTER_DEFINE_WITH_CODE (ximagesink, "ximagesink",
+    GST_RANK_SECONDARY, GST_TYPE_X_IMAGE_SINK, _do_init);
+
 /* ============================================================= */
 /*                                                               */
 /*                       Private Methods                         */
index 8574ef3..98dce61 100644 (file)
@@ -208,6 +208,7 @@ struct _GstXImageSinkClass
 };
 
 GType gst_x_image_sink_get_type (void);
+GST_ELEMENT_REGISTER_DECLARE (ximagesink);
 
 G_END_DECLS
 #endif /* __GST_X_IMAGE_SINK_H__ */