gstpad: Probes that return HANDLED can reset the data info field
[platform/upstream/gstreamer.git] / gst / gsttaskpool.h
index ff5106b..3b654d9 100644 (file)
@@ -15,8 +15,8 @@
  *
  * You should have received a copy of the GNU Library General Public
  * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
  */
 
 #ifndef __GST_TASK_POOL_H__
@@ -39,6 +39,14 @@ typedef struct _GstTaskPool GstTaskPool;
 typedef struct _GstTaskPoolClass GstTaskPoolClass;
 
 /**
+ * GstTaskPoolFunction:
+ * @user_data: user data for the task function
+ *
+ * Task function, see gst_task_pool_push().
+ */
+typedef void   (*GstTaskPoolFunction)          (void *user_data);
+
+/**
  * GstTaskPool:
  *
  * The #GstTaskPool object.
@@ -47,9 +55,6 @@ struct _GstTaskPool {
   GstObject      object;
 
   /*< private >*/
-  GFunc          func;
-  gpointer       user_data;
-
   GThreadPool   *pool;
 
   gpointer _gst_reserved[GST_PADDING];
@@ -69,32 +74,39 @@ struct _GstTaskPoolClass {
   GstObjectClass parent_class;
 
   /*< public >*/
-  void      (*prepare)  (GstTaskPool *pool, GFunc func,
-                         gpointer user_data, GError **error);
+  void      (*prepare)  (GstTaskPool *pool, GError **error);
   void      (*cleanup)  (GstTaskPool *pool);
 
-  gpointer  (*push)     (GstTaskPool *pool, gpointer data, GError **error);
+  gpointer  (*push)     (GstTaskPool *pool, GstTaskPoolFunction func,
+                         gpointer user_data, GError **error);
   void      (*join)     (GstTaskPool *pool, gpointer id);
 
   /*< private >*/
   gpointer _gst_reserved[GST_PADDING];
 };
 
+GST_API
 GType           gst_task_pool_get_type    (void);
 
+GST_API
 GstTaskPool *   gst_task_pool_new         (void);
 
-void            gst_task_pool_set_func    (GstTaskPool *pool,
-                                           GFunc func, gpointer user_data);
-
+GST_API
 void            gst_task_pool_prepare     (GstTaskPool *pool, GError **error);
 
-gpointer        gst_task_pool_push        (GstTaskPool *pool, gpointer data,
-                                           GError **error);
+GST_API
+gpointer        gst_task_pool_push        (GstTaskPool *pool, GstTaskPoolFunction func,
+                                           gpointer user_data, GError **error);
+GST_API
 void            gst_task_pool_join        (GstTaskPool *pool, gpointer id);
 
+GST_API
 void           gst_task_pool_cleanup     (GstTaskPool *pool);
 
+#ifdef G_DEFINE_AUTOPTR_CLEANUP_FUNC
+G_DEFINE_AUTOPTR_CLEANUP_FUNC(GstTaskPool, gst_object_unref)
+#endif
+
 G_END_DECLS
 
-#endif /* __GST_TASK_H__ */
+#endif /* __GST_TASK_POOL_H__ */