summaryrefslogtreecommitdiff
path: root/macosx/plugins/DFXVideo/macsrc
diff options
context:
space:
mode:
authorSND\MaddTheSane_cp <SND\MaddTheSane_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97>2013-06-22 22:00:50 +0000
committerSND\MaddTheSane_cp <SND\MaddTheSane_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97>2013-06-22 22:00:50 +0000
commit32f0cfc0e047e2f5762357327d45bc7c823f29aa (patch)
tree81e1a77dc01caaf930c30590ac0bb6e61bcc7d0c /macosx/plugins/DFXVideo/macsrc
parent3381afb0699b775333ac2243c64960daf0227db2 (diff)
downloadpcsxr-32f0cfc0e047e2f5762357327d45bc7c823f29aa.tar.gz
Fixing a deadlock in PeopsSoftGL's shader code.
git-svn-id: https://pcsxr.svn.codeplex.com/svn/pcsxr@85492 e17a0e51-4ae3-4d35-97c3-1a29b211df97
Diffstat (limited to 'macosx/plugins/DFXVideo/macsrc')
-rwxr-xr-xmacosx/plugins/DFXVideo/macsrc/PluginGLView.m123
1 files changed, 59 insertions, 64 deletions
diff --git a/macosx/plugins/DFXVideo/macsrc/PluginGLView.m b/macosx/plugins/DFXVideo/macsrc/PluginGLView.m
index 7c65cd30..e5899d38 100755
--- a/macosx/plugins/DFXVideo/macsrc/PluginGLView.m
+++ b/macosx/plugins/DFXVideo/macsrc/PluginGLView.m
@@ -770,77 +770,72 @@ void BlitScreen16NS(unsigned char * surf,long x,long y)
- (GLuint)loadShader:(GLenum)type location:(NSURL*)filename
{
- __block GLuint myShader = 0;
-
- dispatch_sync(dispatch_get_main_queue(), ^{
- GLsizei logsize = 0;
- GLint compile_status = GL_TRUE;
- char *log = NULL;
- char *src = NULL;
+ GLuint myShader = 0;
+
+ GLsizei logsize = 0;
+ GLint compile_status = GL_TRUE;
+ char *log = NULL;
+ char *src = NULL;
+
+ /* creation d'un shader de sommet */
+ myShader = glCreateShader(type);
+ if(myShader == 0)
+ {
+ fprintf(stderr, "impossible de creer le shader\n");
+ return 0;
+ }
+
+ /* chargement du code source */
+ src = [self loadSource:filename];
+ if(src == NULL)
+ {
+ /* theoriquement, la fonction LoadSource a deja affiche un message
+ d'erreur, nous nous contenterons de supprimer notre shader
+ et de retourner 0 */
- /* creation d'un shader de sommet */
- myShader = glCreateShader(type);
- if(myShader == 0)
- {
- fprintf(stderr, "impossible de creer le shader\n");
- return;
- }
+ glDeleteShader(myShader);
+ return 0;
+ }
+
+ /* assignation du code source */
+ glShaderSource(myShader, 1, (const GLchar**)&src, NULL);
+
+ /* compilation du shader */
+ glCompileShader(myShader);
+
+ /* liberation de la memoire du code source */
+ free(src);
+ src = NULL;
+
+ /* verification du succes de la compilation */
+ glGetShaderiv(myShader, GL_COMPILE_STATUS, &compile_status);
+ if(compile_status != GL_TRUE)
+ {
+ /* erreur a la compilation recuperation du log d'erreur */
+
+ /* on recupere la taille du message d'erreur */
+ glGetShaderiv(myShader, GL_INFO_LOG_LENGTH, &logsize);
- /* chargement du code source */
- src = [self loadSource:filename];
- if(src == NULL)
+ /* on alloue un espace memoire dans lequel OpenGL ecrira le message */
+ log = malloc(logsize + 1);
+ if(log == NULL)
{
- /* theoriquement, la fonction LoadSource a deja affiche un message
- d'erreur, nous nous contenterons de supprimer notre shader
- et de retourner 0 */
-
- glDeleteShader(myShader);
- myShader = 0;
- return;
+ fprintf(stderr, "impossible d'allouer de la memoire !\n");
+ return 0;
}
+ /* initialisation du contenu */
+ memset(log, '\0', logsize + 1);
- /* assignation du code source */
- glShaderSource(myShader, 1, (const GLchar**)&src, NULL);
+ glGetShaderInfoLog(myShader, logsize, &logsize, log);
+ fprintf(stderr, "impossible de compiler le shader '%s' :\n%s",
+ [[filename path] UTF8String], log);
- /* compilation du shader */
- glCompileShader(myShader);
+ /* ne pas oublier de liberer la memoire et notre shader */
+ free(log);
+ glDeleteShader(myShader);
- /* liberation de la memoire du code source */
- free(src);
- src = NULL;
-
- /* verification du succes de la compilation */
- glGetShaderiv(myShader, GL_COMPILE_STATUS, &compile_status);
- if(compile_status != GL_TRUE)
- {
- /* erreur a la compilation recuperation du log d'erreur */
-
- /* on recupere la taille du message d'erreur */
- glGetShaderiv(myShader, GL_INFO_LOG_LENGTH, &logsize);
-
- /* on alloue un espace memoire dans lequel OpenGL ecrira le message */
- log = malloc(logsize + 1);
- if(log == NULL)
- {
- fprintf(stderr, "impossible d'allouer de la memoire !\n");
- myShader = 0;
- return;
- }
- /* initialisation du contenu */
- memset(log, '\0', logsize + 1);
-
- glGetShaderInfoLog(myShader, logsize, &logsize, log);
- fprintf(stderr, "impossible de compiler le shader '%s' :\n%s",
- [[filename path] UTF8String], log);
-
- /* ne pas oublier de liberer la memoire et notre shader */
- free(log);
- glDeleteShader(myShader);
-
- myShader = 0;
- return;
- }
- });
+ return 0;
+ }
return myShader;
}