summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean-Philippe Andre <jp.andre@samsung.com>2017-08-16 14:06:51 +0900
committerJean-Philippe Andre <jp.andre@samsung.com>2017-08-16 14:06:51 +0900
commitb3722c05f903f417467eb8d3559b633ce868fd8c (patch)
tree75aa7f22e0ec08012e00fcfb78b1512c48f35107
parent4cd1257b1be6e6c76d9cb86cb647fb3bfbc91765 (diff)
downloadefl-b3722c05f903f417467eb8d3559b633ce868fd8c.tar.gz
evas: Fix crash with filters
Since the EO APIs are defined as weak symbols, invalid definitions of EAPI lead to runtime crashes on non-public APIs. This is a fix following a series of changes wrt. EAPI definitions.
-rw-r--r--src/Makefile_Evas.am2
-rw-r--r--src/modules/evas/engines/gl_generic/evas_ector_gl.h36
-rw-r--r--src/modules/evas/engines/gl_generic/evas_ector_gl_buffer.c4
-rw-r--r--src/modules/evas/engines/gl_generic/evas_ector_gl_image_buffer.c4
-rw-r--r--src/modules/evas/engines/gl_generic/evas_engine.c4
-rw-r--r--src/modules/evas/engines/gl_generic/filters/gl_engine_filter.h2
-rw-r--r--src/modules/evas/engines/software_generic/evas_ector_software.h35
-rw-r--r--src/modules/evas/engines/software_generic/evas_ector_software_buffer.c4
-rw-r--r--src/modules/evas/engines/software_generic/evas_engine.c3
9 files changed, 79 insertions, 15 deletions
diff --git a/src/Makefile_Evas.am b/src/Makefile_Evas.am
index 127042e998..37e1167829 100644
--- a/src/Makefile_Evas.am
+++ b/src/Makefile_Evas.am
@@ -648,6 +648,7 @@ modules/evas/engines/software_generic/evas_native_tbm.c \
modules/evas/engines/software_generic/evas_native_dmabuf.c \
modules/evas/engines/software_generic/evas_ector_software_buffer.c \
modules/evas/engines/software_generic/evas_native_common.h \
+modules/evas/engines/software_generic/evas_ector_software.h \
$(GFX_FILTER_SW_FILES)
lib_evas_libevas_la_LIBADD +=
lib_evas_libevas_la_CPPFLAGS += -I$(top_srcdir)/src/lib/ector \
@@ -843,6 +844,7 @@ GL_GENERIC_SOURCES = \
modules/evas/engines/gl_generic/evas_engine.c \
modules/evas/engines/gl_generic/Evas_Engine_GL_Generic.h \
modules/evas/engines/gl_generic/Evas_Engine_GL_Shared.h \
+modules/evas/engines/gl_generic/evas_ector_gl.h \
modules/evas/engines/gl_generic/evas_ector_gl_buffer.c \
modules/evas/engines/gl_generic/evas_ector_gl_image_buffer.c \
modules/evas/engines/gl_generic/filters/gl_engine_filter.h \
diff --git a/src/modules/evas/engines/gl_generic/evas_ector_gl.h b/src/modules/evas/engines/gl_generic/evas_ector_gl.h
new file mode 100644
index 0000000000..49d9673934
--- /dev/null
+++ b/src/modules/evas/engines/gl_generic/evas_ector_gl.h
@@ -0,0 +1,36 @@
+#ifndef EVAS_ECTOR_GL_H
+#define EVAS_ECTOR_GL_H
+
+#undef EAPI
+
+#ifdef _WIN32
+# ifdef EFL_EVAS_BUILD
+# ifdef DLL_EXPORT
+# define EAPI __declspec(dllexport)
+# else
+# define EAPI
+# endif /* ! DLL_EXPORT */
+# else
+# define EAPI __declspec(dllimport)
+# endif /* ! EFL_EVAS_BUILD */
+#else
+# ifdef __GNUC__
+# if __GNUC__ >= 4
+# define EAPI __attribute__ ((visibility("default")))
+# else
+# define EAPI
+# endif
+# else
+# define EAPI
+# endif
+#endif /* ! _WIN32 */
+
+#include "evas_ector_buffer.eo.h"
+#include "evas_ector_gl_buffer.eo.h"
+#include "evas_ector_gl_image_buffer.eo.h"
+
+#undef EAPI
+#define EAPI
+
+#endif /* ! EVAS_ECTOR_GL_H */
+
diff --git a/src/modules/evas/engines/gl_generic/evas_ector_gl_buffer.c b/src/modules/evas/engines/gl_generic/evas_ector_gl_buffer.c
index 46eb8d319b..bf32548e8c 100644
--- a/src/modules/evas/engines/gl_generic/evas_ector_gl_buffer.c
+++ b/src/modules/evas/engines/gl_generic/evas_ector_gl_buffer.c
@@ -10,9 +10,7 @@
#include <software/Ector_Software.h>
#include <gl/Ector_GL.h>
#include "Evas_Engine_GL_Generic.h"
-
-#include "evas_ector_buffer.eo.h"
-#include "evas_ector_gl_buffer.eo.h"
+#include "evas_ector_gl.h"
#include "evas_gl_private.h"
#define MY_CLASS EVAS_ECTOR_GL_BUFFER_CLASS
diff --git a/src/modules/evas/engines/gl_generic/evas_ector_gl_image_buffer.c b/src/modules/evas/engines/gl_generic/evas_ector_gl_image_buffer.c
index 1ba39d1b3a..5cb423dcb7 100644
--- a/src/modules/evas/engines/gl_generic/evas_ector_gl_image_buffer.c
+++ b/src/modules/evas/engines/gl_generic/evas_ector_gl_image_buffer.c
@@ -12,9 +12,7 @@
#include <software/Ector_Software.h>
#include <gl/Ector_GL.h>
#include "Evas_Engine_GL_Generic.h"
-
-#include "evas_ector_buffer.eo.h"
-#include "evas_ector_gl_image_buffer.eo.h"
+#include "evas_ector_gl.h"
#include "evas_gl_private.h"
#define MY_CLASS EVAS_ECTOR_GL_IMAGE_BUFFER_CLASS
diff --git a/src/modules/evas/engines/gl_generic/evas_engine.c b/src/modules/evas/engines/gl_generic/evas_engine.c
index 3fe5eb8dfa..edf1d54366 100644
--- a/src/modules/evas/engines/gl_generic/evas_engine.c
+++ b/src/modules/evas/engines/gl_generic/evas_engine.c
@@ -4,9 +4,7 @@
#include "software/Ector_Software.h"
#include "cairo/Ector_Cairo.h"
#include "gl/Ector_GL.h"
-#include "evas_ector_buffer.eo.h"
-#include "evas_ector_gl_buffer.eo.h"
-#include "evas_ector_gl_image_buffer.eo.h"
+#include "evas_ector_gl.h"
#include "filters/gl_engine_filter.h"
#if defined HAVE_DLSYM && ! defined _WIN32
diff --git a/src/modules/evas/engines/gl_generic/filters/gl_engine_filter.h b/src/modules/evas/engines/gl_generic/filters/gl_engine_filter.h
index b310dce134..9cb59d1969 100644
--- a/src/modules/evas/engines/gl_generic/filters/gl_engine_filter.h
+++ b/src/modules/evas/engines/gl_generic/filters/gl_engine_filter.h
@@ -3,7 +3,7 @@
#include "evas_filter_private.h"
#include "evas_gl_common.h"
-#include "evas_ector_buffer.eo.h"
+#include "../evas_ector_gl.h"
#include "../Evas_Engine_GL_Generic.h"
extern int _evas_engine_GL_log_dom;
diff --git a/src/modules/evas/engines/software_generic/evas_ector_software.h b/src/modules/evas/engines/software_generic/evas_ector_software.h
new file mode 100644
index 0000000000..5d10143cc4
--- /dev/null
+++ b/src/modules/evas/engines/software_generic/evas_ector_software.h
@@ -0,0 +1,35 @@
+#ifndef EVAS_ECTOR_GL_H
+#define EVAS_ECTOR_GL_H
+
+#undef EAPI
+
+#ifdef _WIN32
+# ifdef EFL_EVAS_BUILD
+# ifdef DLL_EXPORT
+# define EAPI __declspec(dllexport)
+# else
+# define EAPI
+# endif /* ! DLL_EXPORT */
+# else
+# define EAPI __declspec(dllimport)
+# endif /* ! EFL_EVAS_BUILD */
+#else
+# ifdef __GNUC__
+# if __GNUC__ >= 4
+# define EAPI __attribute__ ((visibility("default")))
+# else
+# define EAPI
+# endif
+# else
+# define EAPI
+# endif
+#endif /* ! _WIN32 */
+
+#include "evas_ector_buffer.eo.h"
+#include "evas_ector_software_buffer.eo.h"
+
+#undef EAPI
+#define EAPI
+
+#endif /* ! EVAS_ECTOR_GL_H */
+
diff --git a/src/modules/evas/engines/software_generic/evas_ector_software_buffer.c b/src/modules/evas/engines/software_generic/evas_ector_software_buffer.c
index cebda32501..0b85c33d9a 100644
--- a/src/modules/evas/engines/software_generic/evas_ector_software_buffer.c
+++ b/src/modules/evas/engines/software_generic/evas_ector_software_buffer.c
@@ -5,9 +5,7 @@
#include <software/Ector_Software.h>
#include "evas_common_private.h"
#include "evas_private.h"
-
-#include "evas_ector_buffer.eo.h"
-#include "evas_ector_software_buffer.eo.h"
+#include "evas_ector_software.h"
#define MY_CLASS EVAS_ECTOR_SOFTWARE_BUFFER_CLASS
diff --git a/src/modules/evas/engines/software_generic/evas_engine.c b/src/modules/evas/engines/software_generic/evas_engine.c
index 7697592a30..f5caa73526 100644
--- a/src/modules/evas/engines/software_generic/evas_engine.c
+++ b/src/modules/evas/engines/software_generic/evas_engine.c
@@ -9,8 +9,7 @@
#include <software/Ector_Software.h>
#include "cairo/Ector_Cairo.h"
-#include "evas_ector_buffer.eo.h"
-#include "evas_ector_software_buffer.eo.h"
+#include "evas_ector_software.h"
#include "draw.h"
#include "evas_filter_private.h"