From: Hubert Stachowiak Date: Thu, 24 Aug 2023 08:06:29 +0000 (+0200) Subject: evas_gl_shader: Fix shader lock mechanism X-Git-Tag: accepted/tizen/unified/20230907.055343^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=80c8703e9ed88f4d573b4e642ca0c775c9343b19;p=platform%2Fupstream%2Fefl.git evas_gl_shader: Fix shader lock mechanism Change-Id: Iac54b071364921b58175814adcfde917579750a9 --- diff --git a/src/modules/evas/engines/gl_common/evas_gl_shader.c b/src/modules/evas/engines/gl_common/evas_gl_shader.c index 26df4a5..154519f 100755 --- a/src/modules/evas/engines/gl_common/evas_gl_shader.c +++ b/src/modules/evas/engines/gl_common/evas_gl_shader.c @@ -457,8 +457,10 @@ _shaders_hash_free_cb(void *data) _program_del(data); } -static void +//TIZEN_ONLY(20230824) evas_gl_shader.c: Fix shader lock mechanism +static Eina_Bool _shader_lock(Evas_GL_Shared *shared,const char *cache_dir) +// { char lock_path[PATH_MAX]; int ret; @@ -466,13 +468,17 @@ _shader_lock(Evas_GL_Shared *shared,const char *cache_dir) if (ret >= PATH_MAX) { ERR("Truncated lock path : %s", lock_path); - return; + //TIZEN_ONLY(20230824) evas_gl_shader: Fix shader lock mechanism + return EINA_FALSE; + // } shared->lock_shader = open(lock_path, O_RDWR | O_CREAT , S_IRUSR | S_IWUSR); if(shared->lock_shader<0) { ERR("lock create is failed "); - return; + //TIZEN_ONLY(20230824) evas_gl_shader: Fix shader lock mechanism + return EINA_FALSE; + // } /* lock for wait creating shader*/ @@ -484,8 +490,13 @@ _shader_lock(Evas_GL_Shared *shared,const char *cache_dir) if (fcntl(shared->lock_shader, F_SETLKW, &filelock) == -1) { ERR("lock take fail"); - return; + //TIZEN_ONLY(20230824) evas_gl_shader: Fix shader lock mechanism + return EINA_FALSE; + // } + //TIZEN_ONLY(20230824) evas_gl_shader: Fix shader lock mechanism + return EINA_TRUE; + // } static void @@ -795,7 +806,10 @@ evas_gl_common_shader_program_init(Evas_GL_Shared *shared) goto Load; //shader lock for wait other process - _shader_lock(shared,bin_dir_path); + //TIZEN_ONLY(20230824) evas_gl_shader: Fix shader lock mechanism + if (!_shader_lock(shared,bin_dir_path)) return 0; + // + if(_evas_gl_common_shader_binary_init(shared)) { _shader_unlock(shared);