[vlc-devel] commit: opengl: Link the gl texture to the picture. (Pierre d'Herbemont )

git version control git at videolan.org
Tue Dec 8 19:32:06 CET 2009


vlc | branch: master | Pierre d'Herbemont <pdherbemont at free.fr> | Tue Dec  8 19:25:03 2009 +0100| [bfcea9facbe30916441821d5e4ad76828832d580] | committer: Pierre d'Herbemont 

opengl: Link the gl texture to the picture.

This fixes the opengl "vout display" on Mac OS X.

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=bfcea9facbe30916441821d5e4ad76828832d580
---

 modules/video_output/opengl.h |   18 +++++++++++++-----
 1 files changed, 13 insertions(+), 5 deletions(-)

diff --git a/modules/video_output/opengl.h b/modules/video_output/opengl.h
index 1ad8cad..c54258f 100644
--- a/modules/video_output/opengl.h
+++ b/modules/video_output/opengl.h
@@ -263,8 +263,15 @@ static int vout_display_opengl_ResetTextures(vout_display_opengl_t *vgl)
 /* XXX See comment vout_display_opengl_Prepare */
 struct picture_sys_t {
     vout_display_opengl_t *vgl;
-    GLuint texture;
+    GLuint *texture;
 };
+
+/* Small helper */
+static inline GLuint get_texture(picture_t *picture)
+{
+    return *picture->p_sys->texture;
+}
+
 static int PictureLock(picture_t *picture)
 {
     if (!picture->p_sys)
@@ -273,7 +280,7 @@ static int PictureLock(picture_t *picture)
     vout_display_opengl_t *vgl = picture->p_sys->vgl;
     if (!vout_opengl_Lock(vgl->gl)) {
 
-        glBindTexture(VLCGL_TARGET, picture->p_sys->texture);
+        glBindTexture(VLCGL_TARGET, get_texture(picture));
         glTexSubImage2D(VLCGL_TARGET, 0, 0, 0,
                         vgl->fmt.i_width, vgl->fmt.i_height,
                         VLCGL_FORMAT, VLCGL_TYPE, picture->p[0].p_pixels);
@@ -304,9 +311,10 @@ static picture_pool_t *vout_display_opengl_GetPool(vout_display_opengl_t *vgl)
         memset(&rsc, 0, sizeof(rsc));
 #ifdef __APPLE__
         rsc.p_sys = malloc(sizeof(*rsc.p_sys));
-        if (rsc.p_sys) {
+        if (rsc.p_sys)
+        {
             rsc.p_sys->vgl = vgl;
-            rsc.p_sys->texture = vgl->texture[i];
+            rsc.p_sys->texture = &vgl->texture[i];
         }
 #endif
         rsc.p[0].p_pixels = vgl->buffer[i];
@@ -372,7 +380,7 @@ static int vout_display_opengl_Prepare(vout_display_opengl_t *vgl,
 
 #ifdef __APPLE__
     /* Bind to the texture for drawing */
-    glBindTexture(VLCGL_TARGET, picture->p_sys->texture);
+    glBindTexture(VLCGL_TARGET, get_texture(picture));
 #else
     /* Update the texture */
     glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0,




More information about the vlc-devel mailing list