summaryrefslogtreecommitdiffstats
path: root/libvo
diff options
context:
space:
mode:
authorreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2006-06-05 11:45:33 +0000
committerreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2006-06-05 11:45:33 +0000
commitfbae2ba72b4d0b34c69d71e98208acd04c639fb5 (patch)
tree517a2a125163990508d98bf07b1b4a5f0ca86c4c /libvo
parenta0a494e6f2388c90567c437e9c09366ca95eafb0 (diff)
downloadmpv-fbae2ba72b4d0b34c69d71e98208acd04c639fb5.tar.bz2
mpv-fbae2ba72b4d0b34c69d71e98208acd04c639fb5.tar.xz
Move/add checks to avoid crashes and make error messages less confusing
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@18580 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libvo')
-rw-r--r--libvo/gl_common.c22
-rw-r--r--libvo/vo_gl.c4
2 files changed, 15 insertions, 11 deletions
diff --git a/libvo/gl_common.c b/libvo/gl_common.c
index 29da053578..25cb11e96a 100644
--- a/libvo/gl_common.c
+++ b/libvo/gl_common.c
@@ -513,6 +513,11 @@ static void glSetupYUVCombiners(float uvcos, float uvsin) {
GLfloat ucoef[4];
GLfloat vcoef[4];
GLint i;
+ if (!CombinerInput || !CombinerOutput ||
+ !CombinerParameterfv || !CombinerParameteri) {
+ mp_msg(MSGT_VO, MSGL_FATAL, "[gl] Combiner functions missing!\n");
+ return;
+ }
glGetIntegerv(GL_MAX_GENERAL_COMBINERS_NV, &i);
if (i < 2)
mp_msg(MSGT_VO, MSGL_ERR,
@@ -521,11 +526,6 @@ static void glSetupYUVCombiners(float uvcos, float uvsin) {
if (i < 3)
mp_msg(MSGT_VO, MSGL_ERR,
"[gl] 3 texture units needed for YUV combiner support (found %i)\n", i);
- if (!CombinerInput || !CombinerOutput ||
- !CombinerParameterfv || !CombinerParameteri) {
- mp_msg(MSGT_VO, MSGL_FATAL, "[gl] Combiner functions missing!\n");
- return;
- }
fillUVcoeff(ucoef, vcoef, uvcos, uvsin);
CombinerParameterfv(GL_CONSTANT_COLOR0_NV, ucoef);
CombinerParameterfv(GL_CONSTANT_COLOR1_NV, vcoef);
@@ -572,6 +572,12 @@ static void glSetupYUVCombinersATI(float uvcos, float uvsin) {
GLfloat ucoef[4];
GLfloat vcoef[4];
GLint i;
+ if (!BeginFragmentShader || !EndFragmentShader ||
+ !SetFragmentShaderConstant || !SampleMap ||
+ !ColorFragmentOp2 || !ColorFragmentOp3) {
+ mp_msg(MSGT_VO, MSGL_FATAL, "[gl] Combiner (ATI) functions missing!\n");
+ return;
+ }
glGetIntegerv(GL_NUM_FRAGMENT_REGISTERS_ATI, &i);
if (i < 3)
mp_msg(MSGT_VO, MSGL_ERR,
@@ -580,12 +586,6 @@ static void glSetupYUVCombinersATI(float uvcos, float uvsin) {
if (i < 3)
mp_msg(MSGT_VO, MSGL_ERR,
"[gl] 3 texture units needed for YUV combiner (ATI) support (found %i)\n", i);
- if (!BeginFragmentShader || !EndFragmentShader ||
- !SetFragmentShaderConstant || !SampleMap ||
- !ColorFragmentOp2 || !ColorFragmentOp3) {
- mp_msg(MSGT_VO, MSGL_FATAL, "[gl] Combiner (ATI) functions missing!\n");
- return;
- }
fillUVcoeff(ucoef, vcoef, uvcos, uvsin);
BeginFragmentShader();
SetFragmentShaderConstant(GL_CON_0_ATI, ucoef);
diff --git a/libvo/vo_gl.c b/libvo/vo_gl.c
index d026d9deb7..bcb65737b0 100644
--- a/libvo/vo_gl.c
+++ b/libvo/vo_gl.c
@@ -274,6 +274,10 @@ static int initGl(uint32_t d_width, uint32_t d_height) {
glBindTexture(GL_TEXTURE_2D, lookupTex);
case YUV_CONVERSION_FRAGMENT_POW:
case YUV_CONVERSION_FRAGMENT:
+ if (!GenPrograms || !BindProgram) {
+ mp_msg(MSGT_VO, MSGL_ERR, "[gl] fragment program functions missing!\n");
+ break;
+ }
GenPrograms(1, &fragprog);
BindProgram(GL_FRAGMENT_PROGRAM, fragprog);
break;