summaryrefslogtreecommitdiffstats
path: root/libvo/vo_gl.c
diff options
context:
space:
mode:
authorreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2005-08-16 17:57:53 +0000
committerreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2005-08-16 17:57:53 +0000
commit44ec3f7566a1dcfc7cb392226c30d05bb0793204 (patch)
treea0f7c71e0a5f1fe4b555aa7777c6f42326bcb21e /libvo/vo_gl.c
parent1d720784bd086d77059ad207066e6d312444688d (diff)
downloadmpv-44ec3f7566a1dcfc7cb392226c30d05bb0793204.tar.bz2
mpv-44ec3f7566a1dcfc7cb392226c30d05bb0793204.tar.xz
use GenBuffers to get a buffer number instead of hardcoding 1.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@16234 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libvo/vo_gl.c')
-rw-r--r--libvo/vo_gl.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/libvo/vo_gl.c b/libvo/vo_gl.c
index 9499a0a0ec..d413a48d20 100644
--- a/libvo/vo_gl.c
+++ b/libvo/vo_gl.c
@@ -65,6 +65,7 @@ static GLenum gl_target;
static GLenum gl_texfmt;
static GLenum gl_format;
static GLenum gl_type;
+static GLint gl_buffer;
static int gl_buffersize;
static int int_pause;
@@ -147,6 +148,7 @@ static int initGl(uint32_t d_width, uint32_t d_height) {
glClearColor( 0.0f,0.0f,0.0f,0.0f );
glClear( GL_COLOR_BUFFER_BIT );
+ gl_buffer = 0;
gl_buffersize = 0;
err_shown = 0;
return 1;
@@ -419,7 +421,7 @@ static int draw_slice(uint8_t *src[], int stride[], int w,int h,int x,int y)
}
static uint32_t get_image(mp_image_t *mpi) {
- if (!BindBuffer || !BufferData || !MapBuffer) {
+ if (!GenBuffers || !BindBuffer || !BufferData || !MapBuffer) {
if (!err_shown)
mp_msg(MSGT_VO, MSGL_ERR, "[gl] extensions missing for dr\n"
"Expect a _major_ speed penalty\n");
@@ -429,7 +431,9 @@ static uint32_t get_image(mp_image_t *mpi) {
if (mpi->flags & MP_IMGFLAG_READABLE) return VO_FALSE;
if (mpi->type == MP_IMGTYPE_IP || mpi->type == MP_IMGTYPE_IPB)
return VO_FALSE; // we can not provide readable buffers
- BindBuffer(GL_PIXEL_UNPACK_BUFFER, 1);
+ if (!gl_buffer)
+ GenBuffers(1, &gl_buffer);
+ BindBuffer(GL_PIXEL_UNPACK_BUFFER, gl_buffer);
mpi->stride[0] = mpi->width * mpi->bpp / 8;
if (mpi->stride[0] * mpi->h > gl_buffersize) {
BufferData(GL_PIXEL_UNPACK_BUFFER, mpi->stride[0] * mpi->h,
@@ -457,7 +461,7 @@ static uint32_t draw_image(mp_image_t *mpi) {
return VO_TRUE;
if (mpi->flags & MP_IMGFLAG_DIRECT) {
data = NULL;
- BindBuffer(GL_PIXEL_UNPACK_BUFFER, 1);
+ BindBuffer(GL_PIXEL_UNPACK_BUFFER, gl_buffer);
UnmapBuffer(GL_PIXEL_UNPACK_BUFFER);
slice = 0; // always "upload" full texture
}