comparison libvo/vo_gl.c @ 28065:aec8703ff07f

Avoid one more duplicated logic.
author reimar
date Fri, 05 Dec 2008 20:56:49 +0000
parents 4d76c7e31760
children 7511f7328d93
comparison
equal deleted inserted replaced
28064:4d76c7e31760 28065:aec8703ff07f
679 } 679 }
680 return 0; 680 return 0;
681 } 681 }
682 682
683 static uint32_t get_image(mp_image_t *mpi) { 683 static uint32_t get_image(mp_image_t *mpi) {
684 int needed_size;
684 if (!GenBuffers || !BindBuffer || !BufferData || !MapBuffer) { 685 if (!GenBuffers || !BindBuffer || !BufferData || !MapBuffer) {
685 if (!err_shown) 686 if (!err_shown)
686 mp_msg(MSGT_VO, MSGL_ERR, "[gl] extensions missing for dr\n" 687 mp_msg(MSGT_VO, MSGL_ERR, "[gl] extensions missing for dr\n"
687 "Expect a _major_ speed penalty\n"); 688 "Expect a _major_ speed penalty\n");
688 err_shown = 1; 689 err_shown = 1;
695 } 696 }
696 if (!gl_buffer) 697 if (!gl_buffer)
697 GenBuffers(1, &gl_buffer); 698 GenBuffers(1, &gl_buffer);
698 BindBuffer(GL_PIXEL_UNPACK_BUFFER, gl_buffer); 699 BindBuffer(GL_PIXEL_UNPACK_BUFFER, gl_buffer);
699 mpi->stride[0] = mpi->width * mpi->bpp / 8; 700 mpi->stride[0] = mpi->width * mpi->bpp / 8;
700 if (mpi->stride[0] * mpi->height > gl_buffersize) { 701 needed_size = mpi->stride[0] * mpi->height;
701 gl_buffersize = mpi->stride[0] * mpi->height; 702 if (needed_size > gl_buffersize) {
703 gl_buffersize = needed_size;
702 BufferData(GL_PIXEL_UNPACK_BUFFER, gl_buffersize, 704 BufferData(GL_PIXEL_UNPACK_BUFFER, gl_buffersize,
703 NULL, GL_DYNAMIC_DRAW); 705 NULL, GL_DYNAMIC_DRAW);
704 } 706 }
705 if (!gl_bufferptr) 707 if (!gl_bufferptr)
706 gl_bufferptr = MapBuffer(GL_PIXEL_UNPACK_BUFFER, GL_WRITE_ONLY); 708 gl_bufferptr = MapBuffer(GL_PIXEL_UNPACK_BUFFER, GL_WRITE_ONLY);