]> git.sesse.net Git - vlc/commitdiff
Replaced vout_display_t::get by ::pool.
authorLaurent Aimar <fenrir@videolan.org>
Sun, 13 Dec 2009 19:48:10 +0000 (20:48 +0100)
committerLaurent Aimar <fenrir@videolan.org>
Sun, 13 Dec 2009 19:50:55 +0000 (20:50 +0100)
include/vlc_vout_display.h
include/vlc_vout_wrapper.h
src/video_output/display.c
src/video_output/display.h

index 5f927e0971de0da3934c8b8f5189a4f0af3ca8b1..af486e95181fef398208b994d25fd42acca26f65 100644 (file)
@@ -31,6 +31,7 @@
 
 #include <vlc_es.h>
 #include <vlc_picture.h>
+#include <vlc_picture_pool.h>
 #include <vlc_subpicture.h>
 #include <vlc_keys.h>
 #include <vlc_mouse.h>
@@ -265,14 +266,16 @@ struct vout_display_t {
      */
     vout_display_info_t info;
 
-    /* Return a new picture_t (mandatory).
+    /* Return a pointer over the current picture_pool_t* (mandatory).
      *
+     * For performance reasons, it is best to provide at least count
+     * pictures but it is not mandatory.
      * You can return NULL when you cannot/do not want to allocate
-     * more pictures.
-     * If you want to create a pool of reusable pictures, you can
-     * use a picture_pool_t.
+     * pictures.
+     * The vout display module keeps the ownership of the pool and can
+     * destroy it only when closing or on invalid pictures control.
      */
-    picture_t *(*get)(vout_display_t *);
+    picture_pool_t *(*pool)(vout_display_t *, unsigned count);
 
     /* Prepare a picture for display (optional).
      *
index d6a9e2b3ca3d677ef3ccba669c61b0a034fa7ea6..d7ff1966386ce2c85822c8c78919328790e10e11 100644 (file)
 /* XXX DO NOT use it outside the vout module wrapper XXX */
 
 /**
- * It retreive a picture from the display
+ * It retreives a picture pool from the display
  */
-static inline picture_t *vout_display_Get(vout_display_t *vd)
+static inline picture_pool_t *vout_display_Pool(vout_display_t *vd, unsigned count)
 {
-    return vd->get(vd);
+    return vd->pool(vd, count);
 }
 
 /**
index eec453626ba99e8c94b5ff09d169b112613530e6..8f3681da2ccb7b8a4a3119b216ff8c119cf1a9c2 100644 (file)
@@ -58,7 +58,10 @@ static picture_t *VideoBufferNew(filter_t *filter)
            vd->fmt.i_width  == fmt->i_width  &&
            vd->fmt.i_height == fmt->i_height);
 
-    return vout_display_Get(vd);
+    picture_pool_t *pool = vout_display_Pool(vd, 1);
+    if (!pool)
+        return NULL;
+    return picture_pool_Get(pool);
 }
 static void VideoBufferDelete(filter_t *filter, picture_t *picture)
 {
@@ -112,7 +115,7 @@ static vout_display_t *vout_display_New(vlc_object_t *obj,
     vd->info.has_pictures_invalid = false;
 
     vd->cfg = cfg;
-    vd->get = NULL;
+    vd->pool = NULL;
     vd->prepare = NULL;
     vd->display = NULL;
     vd->control = NULL;
index 89e5dc7630dfe899b6c31cb64b5a591778c12381..2fa083f2f3ee484458eaee13c771755f54f70782 100644 (file)
@@ -34,9 +34,9 @@
 /**
  * It retreive a picture from the display
  */
-static inline picture_t *vout_display_Get(vout_display_t *vd)
+static inline picture_pool_t *vout_display_Pool(vout_display_t *vd, unsigned count)
 {
-    return vd->get(vd);
+    return vd->pool(vd, count);
 }
 
 /**