[859/906] window: provide some documetation
authorMatthew Waters <ystreet00@gmail.com>
Sat, 23 Nov 2013 11:57:49 +0000 (22:57 +1100)
committerTim-Philipp Müller <tim@centricular.com>
Sat, 9 Dec 2017 19:31:32 +0000 (19:31 +0000)
gst-libs/gst/gl/gstglwindow.c
gst-libs/gst/gl/gstglwindow.h

index 79bd4cd7028f496784ba846bf74fe24aa2b73a82..903ee95ea346ad2003bba480443beb04bc856cda 100644 (file)
  * Boston, MA 02110-1301, USA.
  */
 
+/**
+ * SECTION:gstglwindow
+ * @short_description: window/surface abstraction
+ * @title: GstGLWindow
+ * @see_also: #GstGLContext, #GstGLDisplay
+ *
+ * GstGLWindow represents a window that elements can render into.  A window can
+ * either be a user visible window (onscreen) or hidden (offscreen).
+ */
+
 #if HAVE_CONFIG_H
 # include "config.h"
 #endif
@@ -110,6 +120,12 @@ gst_gl_window_class_init (GstGLWindowClass * klass)
   G_OBJECT_CLASS (klass)->finalize = gst_gl_window_finalize;
 }
 
+/**
+ * gst_gl_window_new:
+ * @display: a #GstGLDisplay
+ *
+ * Returns: (transfer full): a new #GstGLWindow using @display's connection
+ */
 GstGLWindow *
 gst_gl_window_new (GstGLDisplay * display)
 {
@@ -175,6 +191,14 @@ gst_gl_window_finalize (GObject * object)
   G_OBJECT_CLASS (gst_gl_window_parent_class)->finalize (object);
 }
 
+/**
+ * gst_gl_window_set_window_handle:
+ * @window: a #GstGLWindow
+ * @handle: handle to the window
+ *
+ * Sets the window that this @window should render into.  Some implementations
+ * require this to be called with a valid handle before drawing can commence.
+ */
 void
 gst_gl_window_set_window_handle (GstGLWindow * window, guintptr handle)
 {
@@ -190,6 +214,14 @@ gst_gl_window_set_window_handle (GstGLWindow * window, guintptr handle)
   GST_GL_WINDOW_UNLOCK (window);
 }
 
+/**
+ * gst_gl_window_draw_unlocked:
+ * @window: a #GstGLWindow
+ * @width: requested width of the window
+ * @height: requested height of the window
+ *
+ * Redraw the window contents.  Implementations should invoke the draw callback.
+ */
 void
 gst_gl_window_draw_unlocked (GstGLWindow * window, guint width, guint height)
 {
@@ -202,6 +234,14 @@ gst_gl_window_draw_unlocked (GstGLWindow * window, guint width, guint height)
   window_class->draw_unlocked (window, width, height);
 }
 
+/**
+ * gst_gl_window_draw:
+ * @window: a #GstGLWindow
+ * @width: requested width of the window
+ * @height: requested height of the window
+ *
+ * Redraw the window contents.  Implementations should invoke the draw callback.
+ */
 void
 gst_gl_window_draw (GstGLWindow * window, guint width, guint height)
 {
@@ -223,6 +263,12 @@ gst_gl_window_draw (GstGLWindow * window, guint width, guint height)
   GST_GL_WINDOW_UNLOCK (window);
 }
 
+/**
+ * gst_gl_window_run:
+ * @window: a #GstGLWindow
+ *
+ * Start the execution of the runloop.
+ */
 void
 gst_gl_window_run (GstGLWindow * window)
 {
@@ -238,6 +284,12 @@ gst_gl_window_run (GstGLWindow * window)
   GST_GL_WINDOW_UNLOCK (window);
 }
 
+/**
+ * gst_gl_window_quit:
+ * @window: a #GstGLWindow
+ *
+ * Quit the runloop's execution.
+ */
 void
 gst_gl_window_quit (GstGLWindow * window)
 {
@@ -309,6 +361,15 @@ gst_gl_window_default_send_message (GstGLWindow * window,
   g_cond_clear (&message.cond);
 }
 
+/**
+ * gst_gl_window_send_message:
+ * @window: a #GstGLWindow
+ * @callback: (scope async): function to invoke
+ * @data: (closure): data to invoke @callback with
+ *
+ * Invoke @callback with data on the window thread.  @callback is guarenteed to
+ * have executed when this function returns.
+ */
 void
 gst_gl_window_send_message (GstGLWindow * window, GstGLWindowCB callback,
     gpointer data)
@@ -325,6 +386,16 @@ gst_gl_window_send_message (GstGLWindow * window, GstGLWindowCB callback,
   GST_GL_WINDOW_UNLOCK (window);
 }
 
+/**
+ * gst_gl_window_send_message_async:
+ * @window: a #GstGLWindow
+ * @callback: (scope async): function to invoke
+ * @data: (closure): data to invoke @callback with
+ * @destroy: (destroy): called when @data is not needed anymore
+ *
+ * Invoke @callback with @data on the window thread.  The callback may not
+ * have been executed when this function returns.
+ */
 void
 gst_gl_window_send_message_async (GstGLWindow * window, GstGLWindowCB callback,
     gpointer data, GDestroyNotify destroy)
@@ -341,9 +412,8 @@ gst_gl_window_send_message_async (GstGLWindow * window, GstGLWindowCB callback,
 
 /**
  * gst_gl_window_set_need_lock:
- *
- * window: a #GstGLWindow
- * need_lock: whether the @window needs to lock for concurrent access
+ * @window: a #GstGLWindow
+ * @need_lock: whether the @window needs to lock for concurrent access
  *
  * This API is intended only for subclasses of #GstGLWindow in order to ensure
  * correct interaction with the underlying window system.
@@ -356,6 +426,15 @@ gst_gl_window_set_need_lock (GstGLWindow * window, gboolean need_lock)
   window->need_lock = need_lock;
 }
 
+/**
+ * gst_gl_window_set_draw_callback:
+ * @window: a #GstGLWindow
+ * @callback: (scope notified): function to invoke
+ * @data: (closure): data to invoke @callback with
+ * @destroy_notify: (destroy): called when @data is not needed any more
+ *
+ * Sets the draw callback called everytime gst_gl_window_draw() is called
+ */
 void
 gst_gl_window_set_draw_callback (GstGLWindow * window, GstGLWindowCB callback,
     gpointer data, GDestroyNotify destroy_notify)
@@ -374,6 +453,15 @@ gst_gl_window_set_draw_callback (GstGLWindow * window, GstGLWindowCB callback,
   GST_GL_WINDOW_UNLOCK (window);
 }
 
+/**
+ * gst_gl_window_set_resize_callback:
+ * @window: a #GstGLWindow
+ * @callback: (scope notified): function to invoke
+ * @data: (closure): data to invoke @callback with
+ * @destroy_notify: (destroy): called when @data is not needed any more
+ *
+ * Sets the resize callback called everytime a resize of the window occurs.
+ */
 void
 gst_gl_window_set_resize_callback (GstGLWindow * window,
     GstGLWindowResizeCB callback, gpointer data, GDestroyNotify destroy_notify)
@@ -392,6 +480,15 @@ gst_gl_window_set_resize_callback (GstGLWindow * window,
   GST_GL_WINDOW_UNLOCK (window);
 }
 
+/**
+ * gst_gl_window_set_close_callback:
+ * @window: a #GstGLWindow
+ * @callback: (scope notified): function to invoke
+ * @data: (closure): data to invoke @callback with
+ * @destroy_notify: (destroy): called when @data is not needed any more
+ *
+ * Sets the callback called when the window is about to close.
+ */
 void
 gst_gl_window_set_close_callback (GstGLWindow * window, GstGLWindowCB callback,
     gpointer data, GDestroyNotify destroy_notify)
@@ -410,12 +507,24 @@ gst_gl_window_set_close_callback (GstGLWindow * window, GstGLWindowCB callback,
   GST_GL_WINDOW_UNLOCK (window);
 }
 
+/**
+ * gst_gl_window_is_running:
+ * @window: a #GstGLWindow
+ *
+ * Whether the runloop is running
+ */
 gboolean
 gst_gl_window_is_running (GstGLWindow * window)
 {
   return window->priv->alive;
 }
 
+/**
+ * gst_gl_window_get_display:
+ * @window: a #GstGLWindow
+ *
+ * Returns: the windowing system display handle for this @window
+ */
 guintptr
 gst_gl_window_get_display (GstGLWindow * window)
 {
@@ -435,6 +544,12 @@ gst_gl_window_get_display (GstGLWindow * window)
   return ret;
 }
 
+/**
+ * gst_gl_window_get_window_handle:
+ * @window: a #GstGLWindow
+ *
+ * Returns: the window handle we are currently rendering into
+ */
 guintptr
 gst_gl_window_get_window_handle (GstGLWindow * window)
 {
@@ -454,6 +569,12 @@ gst_gl_window_get_window_handle (GstGLWindow * window)
   return ret;
 }
 
+/**
+ * gst_gl_window_get_context:
+ * @window: a #GstGLWindow
+ *
+ * Returns: (transfer full): the #GstGLContext associated with this @window
+ */
 GstGLContext *
 gst_gl_window_get_context (GstGLWindow * window)
 {
index 4a03fc82936768cdbc036d894c1a08e7c3e6aab0..fb8298b8242a825fd410e38c01a305473306434a 100644 (file)
@@ -25,6 +25,8 @@
 #include <gst/gst.h>
 
 #include <gst/gl/gstgl_fwd.h>
+#include <gst/gl/gstglcontext.h>
+#include <gst/gl/gstgldisplay.h>
 
 G_BEGIN_DECLS
 
@@ -64,11 +66,16 @@ typedef void (*GstGLWindowResizeCB) (gpointer data, guint width, guint height);
 #define        GST_GL_WINDOW_CB(f)                      ((GstGLWindowCB) (f))
 #define        GST_GL_WINDOW_RESIZE_CB(f)               ((GstGLWindowResizeCB) (f))
 
+/**
+ * GstGLWindow:
+ *
+ * #GstGLWindow is an opaque struct and should only be accessed through the
+ * provided api.
+ */
 struct _GstGLWindow {
   /*< private >*/
   GObject parent;
 
-  /*< public >*/
   GMutex        lock;
   gboolean      need_lock;
 
@@ -94,8 +101,24 @@ struct _GstGLWindow {
   GstGLWindowPrivate *priv;
 };
 
+/**
+ * GstGLWindowClass:
+ * @parent_class: Parent class
+ * @get_display: Gets the current windowing system display connection
+ * @set_window_handle: Set a window to render into
+ * @get_window_handle: Gets the current window that this #GstGLWindow is
+ *                     rendering into
+ * @draw_unlocked: redraw the window with the specified dimensions
+ * @draw: redraw the window with the specified dimensions
+ * @run: run the mainloop
+ * @quit: send a quit to the mainloop
+ * @send_message: invoke a function on the window thread.  Required to be reentrant.
+ * @send_message_async: invoke a function on the window thread. @run may or may
+ *                      not have been called.  Required to be reentrant.
+ * @open: open the connection to the display
+ * @close: close the connection to the display
+ */
 struct _GstGLWindowClass {
-  /*< private >*/
   GObjectClass parent_class;
 
   guintptr (*get_display)        (GstGLWindow *window);