summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelipe Magno de Almeida <felipe@expertise.dev>2020-10-18 09:10:00 -0300
committerFelipe Magno de Almeida <felipe@expertise.dev>2020-10-18 09:10:00 -0300
commit7b8abe6f851fe9d2bfb294f8e0d2d205b18ff791 (patch)
tree3107d18c2911c8fbe125b7a472067811073eb96f
parent0b75e82b3d9075eec9eaa07340cbdfa8aaeefde1 (diff)
downloadefl-7b8abe6f851fe9d2bfb294f8e0d2d205b18ff791.tar.gz
ethumb: Rename EAPI macro to ETHUMB_API in Ethumb library
Patch from a series of patches to rename EAPI symbols to specific library DSOs. EAPI was designed to be able to pass ```__attribute__ ((visibility ("default")))``` for symbols with GCC, which would mean that even if -fvisibility=hidden was used when compiling the library, the needed symbols would get exported. MSVC __almost__ works like GCC (or mingw) in which you can declare everything as export and it will just work (slower, but it will work). But there's a caveat: global variables will not work the same way for MSVC, but works for mingw and GCC. For global variables (as opposed to functions), MSVC requires correct DSO visibility for MSVC: instead of declaring a symbol as export for everything, you need to declare it as import when importing from another DSO and export when defining it locally. With current EAPI definitions, we get the following example working in mingw and MSVC (observe it doesn't define any global variables as exported symbols). Example 1: dll1: ``` EAPI void foo(void); EAPI void bar() { foo(); } ``` dll2: ``` EAPI void foo() { printf ("foo\n"); } ``` This works fine with API defined as __declspec(dllexport) in both cases and for gcc defining as ```__atttribute__((visibility("default")))```. However, the following: Example 2: dll1: ``` EAPI extern int foo; EAPI void foobar(void); EAPI void bar() { foo = 5; foobar(); } ``` dll2: ``` EAPI int foo = 0; EAPI void foobar() { printf ("foo %d\n", foo); } ``` This will work on mingw but will not work for MSVC. And that's why EAPI is the only solution that worked for MSVC. Co-authored-by: João Paulo Taylor Ienczak Zanette <jpaulotiz@gmail.com> Co-authored-by: Ricardo Campos <ricardo.campos@expertise.dev> Co-authored-by: Lucas Cavalcante de Sousa <lucks.sousa@gmail.com>
-rw-r--r--src/lib/ethumb/Ethumb.h133
-rw-r--r--src/lib/ethumb/Ethumb_Plugin.h55
-rw-r--r--src/lib/ethumb/ethumb.c126
-rw-r--r--src/lib/ethumb/ethumb_api.h34
-rw-r--r--src/lib/ethumb/ethumb_private.h29
-rw-r--r--src/lib/ethumb/meson.build2
6 files changed, 164 insertions, 215 deletions
diff --git a/src/lib/ethumb/Ethumb.h b/src/lib/ethumb/Ethumb.h
index 5626d5e539..c8187e91c0 100644
--- a/src/lib/ethumb/Ethumb.h
+++ b/src/lib/ethumb/Ethumb.h
@@ -4,31 +4,7 @@
#include <Eina.h>
#include <Efl_Config.h>
-#ifdef EAPI
-# undef EAPI
-#endif
-
-#ifdef _WIN32
-# ifdef EFL_BUILD
-# ifdef DLL_EXPORT
-# define EAPI __declspec(dllexport)
-# else
-# define EAPI
-# endif
-# else
-# define EAPI __declspec(dllimport)
-# endif
-#else
-# ifdef __GNUC__
-# if __GNUC__ >= 4
-# define EAPI __attribute__ ((visibility("default")))
-# else
-# define EAPI
-# endif
-# else
-# define EAPI
-# endif
-#endif
+#include <ethumb_api.h>
#ifdef __cplusplus
extern "C" {
@@ -48,7 +24,7 @@ extern "C" {
int revision; /** < git revision (0 if a proper release or the git revision number Ethumb is built from) */
} Ethumb_Version;
- EAPI extern Ethumb_Version *ethumb_version;
+ ETHUMB_API extern Ethumb_Version *ethumb_version;
/**
* @page ethumb_main Ethumb
@@ -148,23 +124,23 @@ typedef void (*Ethumb_Generate_Cb)(void *data, Ethumb *e, Eina_Bool success);
* @brief Initialize ethumb.
* @return 1 or greater on success, 0 otherwise.
*/
-EAPI int ethumb_init(void);
+ETHUMB_API int ethumb_init(void);
/**
* @brief Shutdown ethumb, unloading all currently-loaded modules.
* @return 0 if ethumb shuts down, an integer greater than 0 otherwise.
*/
-EAPI int ethumb_shutdown(void);
+ETHUMB_API int ethumb_shutdown(void);
/**
* @brief Create a new ethumb object.
* return The newly-created ethumb object
*/
-EAPI Ethumb * ethumb_new(void) EINA_MALLOC EINA_WARN_UNUSED_RESULT;
+ETHUMB_API Ethumb * ethumb_new(void) EINA_MALLOC EINA_WARN_UNUSED_RESULT;
/**
* @brief Free an ethumb object.
*/
-EAPI void ethumb_free(Ethumb *e);
+ETHUMB_API void ethumb_free(Ethumb *e);
/**
* @}
@@ -192,7 +168,7 @@ EAPI void ethumb_free(Ethumb *e);
*
* @return EINA_TRUE on success and EINA_FALSE on failure
*/
-EAPI Eina_Bool ethumb_frame_set(Ethumb *e, const char *theme_file, const char *group, const char *swallow) EINA_ARG_NONNULL(1);
+ETHUMB_API Eina_Bool ethumb_frame_set(Ethumb *e, const char *theme_file, const char *group, const char *swallow) EINA_ARG_NONNULL(1);
/**
* @brief Retreives the current ethumb frame of and Ethumb instance.
@@ -202,7 +178,7 @@ EAPI Eina_Bool ethumb_frame_set(Ethumb *e, const char *theme_file, const char
* @param group will be setted with the edje group
* @param swallow will be setted with the edje swallow
*/
-EAPI void ethumb_frame_get(const Ethumb *e, const char **theme_file, const char **group, const char **swallow) EINA_ARG_NONNULL(1);
+ETHUMB_API void ethumb_frame_get(const Ethumb *e, const char **theme_file, const char **group, const char **swallow) EINA_ARG_NONNULL(1);
/**
* @brief Set the ethumb thumbnails path
@@ -211,7 +187,7 @@ EAPI void ethumb_frame_get(const Ethumb *e, const char **theme_file, con
* @param path The thumbnails path
*
*/
-EAPI void ethumb_thumb_dir_path_set(Ethumb *e, const char *path) EINA_ARG_NONNULL(1);
+ETHUMB_API void ethumb_thumb_dir_path_set(Ethumb *e, const char *path) EINA_ARG_NONNULL(1);
/**
* @brief Get the ethumb thumbnails path
@@ -220,7 +196,7 @@ EAPI void ethumb_thumb_dir_path_set(Ethumb *e, const char *path) EINA_AR
*
* @return The thumbnails path for the current thumbnailer
*/
-EAPI const char *ethumb_thumb_dir_path_get(const Ethumb *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
+ETHUMB_API const char *ethumb_thumb_dir_path_get(const Ethumb *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
/**
* @brief Set the thumbnails category
@@ -228,7 +204,7 @@ EAPI const char *ethumb_thumb_dir_path_get(const Ethumb *e) EINA_WARN_UNUSED_RE
* @param e handle of the current thumbnailer.
* @param category the category to set
*/
-EAPI void ethumb_thumb_category_set(Ethumb *e, const char *category) EINA_ARG_NONNULL(1);
+ETHUMB_API void ethumb_thumb_category_set(Ethumb *e, const char *category) EINA_ARG_NONNULL(1);
/**
* @brief Get the thumbnails category
@@ -237,12 +213,12 @@ EAPI void ethumb_thumb_category_set(Ethumb *e, const char *category) EIN
*
* @return the current thumbnailer thumbnails category
*/
-EAPI const char *ethumb_thumb_category_get(const Ethumb *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
+ETHUMB_API const char *ethumb_thumb_category_get(const Ethumb *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
-EAPI void ethumb_thumb_path_set(Ethumb *e, const char *path, const char *key) EINA_ARG_NONNULL(1);
-EAPI void ethumb_thumb_path_get(Ethumb *e, const char **path, const char **key) EINA_ARG_NONNULL(1);
-EAPI void ethumb_thumb_hash(Ethumb *e) EINA_ARG_NONNULL(1);
-EAPI void ethumb_thumb_hash_copy(Ethumb *dst, const Ethumb *src) EINA_ARG_NONNULL(1, 2);
+ETHUMB_API void ethumb_thumb_path_set(Ethumb *e, const char *path, const char *key) EINA_ARG_NONNULL(1);
+ETHUMB_API void ethumb_thumb_path_get(Ethumb *e, const char **path, const char **key) EINA_ARG_NONNULL(1);
+ETHUMB_API void ethumb_thumb_hash(Ethumb *e) EINA_ARG_NONNULL(1);
+ETHUMB_API void ethumb_thumb_hash_copy(Ethumb *dst, const Ethumb *src) EINA_ARG_NONNULL(1, 2);
typedef enum _Ethumb_Thumb_FDO_Size
{
@@ -277,7 +253,7 @@ typedef enum _Ethumb_Thumb_Orientation
ETHUMB_THUMB_ORIENT_ORIGINAL /**< use orientation from metadata (EXIF-only currently) */
} Ethumb_Thumb_Orientation;
-EAPI void ethumb_thumb_fdo_set(Ethumb *e, Ethumb_Thumb_FDO_Size s) EINA_ARG_NONNULL(1);
+ETHUMB_API void ethumb_thumb_fdo_set(Ethumb *e, Ethumb_Thumb_FDO_Size s) EINA_ARG_NONNULL(1);
/**
* @brief Set the size of thumbnails.
@@ -286,7 +262,7 @@ EAPI void ethumb_thumb_fdo_set(Ethumb *e, Ethumb_Thumb_FDO_Size s) EINA_ARG_NONN
* @param tw Thumbnail width.
* @param th Thumbnail height.
*/
-EAPI void ethumb_thumb_size_set(Ethumb *e, int tw, int th) EINA_ARG_NONNULL(1);
+ETHUMB_API void ethumb_thumb_size_set(Ethumb *e, int tw, int th) EINA_ARG_NONNULL(1);
/**
* @brief Get the size of thumbnails.
*
@@ -294,7 +270,7 @@ EAPI void ethumb_thumb_size_set(Ethumb *e, int tw, int th) EINA_ARG_NONNULL(1);
* @param[out] tw Pointer to an int to store the thumbnail width.
* @param[out] th Pointer to an int to store the thumbnail height.
*/
-EAPI void ethumb_thumb_size_get(const Ethumb *e, int *tw, int *th) EINA_ARG_NONNULL(1);
+ETHUMB_API void ethumb_thumb_size_get(const Ethumb *e, int *tw, int *th) EINA_ARG_NONNULL(1);
/**
* @brief Set the fileformat of the thumbnails
@@ -303,7 +279,7 @@ EAPI void ethumb_thumb_size_get(const Ethumb *e, int *tw, int *th) EINA_ARG_NONN
*
* @param e A pointer to an Ethumb object.
*/
-EAPI void ethumb_thumb_format_set(Ethumb *e, Ethumb_Thumb_Format f) EINA_ARG_NONNULL(1);
+ETHUMB_API void ethumb_thumb_format_set(Ethumb *e, Ethumb_Thumb_Format f) EINA_ARG_NONNULL(1);
/**
* @brief Get the fileformat of the thumbnails
*
@@ -312,7 +288,7 @@ EAPI void ethumb_thumb_format_set(Ethumb *e, Ethumb_Thumb_Fo
*
* @see ethumb_thumb_format_set
*/
-EAPI Ethumb_Thumb_Format ethumb_thumb_format_get(const Ethumb *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
+ETHUMB_API Ethumb_Thumb_Format ethumb_thumb_format_get(const Ethumb *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
/**
* @brief Set the aspect ratio policy.
@@ -324,14 +300,14 @@ EAPI Ethumb_Thumb_Format ethumb_thumb_format_get(const Ethumb *e) EINA_WARN
* @param e A pointer to an Ethumb object.
* @param aspect The new aspect ratio policy.
*/
-EAPI void ethumb_thumb_aspect_set(Ethumb *e, Ethumb_Thumb_Aspect aspect) EINA_ARG_NONNULL(1);
+ETHUMB_API void ethumb_thumb_aspect_set(Ethumb *e, Ethumb_Thumb_Aspect aspect) EINA_ARG_NONNULL(1);
/**
* @brief Get the aspect ratio policy.
*
* @param e A pointer to an Ethumb object.
* @return The aspect ratio policy.
*/
-EAPI Ethumb_Thumb_Aspect ethumb_thumb_aspect_get(const Ethumb *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
+ETHUMB_API Ethumb_Thumb_Aspect ethumb_thumb_aspect_get(const Ethumb *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
/**
* @brief Set the thumbnail rotation or flip.
@@ -339,17 +315,17 @@ EAPI Ethumb_Thumb_Aspect ethumb_thumb_aspect_get(const Ethumb *e) EINA_WARN
* @param e A pointer to an Ethumb object.
* @param orientation The new orientation.
*/
-EAPI void ethumb_thumb_orientation_set(Ethumb *e, Ethumb_Thumb_Orientation orientation) EINA_ARG_NONNULL(1);
+ETHUMB_API void ethumb_thumb_orientation_set(Ethumb *e, Ethumb_Thumb_Orientation orientation) EINA_ARG_NONNULL(1);
/**
* @brief Get the thumbnail rotation.
*
* @param e A pointer to an Ethumb object.
* @return The current rotation.
*/
-EAPI Ethumb_Thumb_Orientation ethumb_thumb_orientation_get(const Ethumb *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
+ETHUMB_API Ethumb_Thumb_Orientation ethumb_thumb_orientation_get(const Ethumb *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
-EAPI void ethumb_thumb_crop_align_set(Ethumb *e, float x, float y) EINA_ARG_NONNULL(1);
-EAPI void ethumb_thumb_crop_align_get(const Ethumb *e, float *x, float *y) EINA_ARG_NONNULL(1);
+ETHUMB_API void ethumb_thumb_crop_align_set(Ethumb *e, float x, float y) EINA_ARG_NONNULL(1);
+ETHUMB_API void ethumb_thumb_crop_align_get(const Ethumb *e, float *x, float *y) EINA_ARG_NONNULL(1);
/**
* @brief Set the thumbnail compression quality.
@@ -357,14 +333,14 @@ EAPI void ethumb_thumb_crop_align_get(const Ethumb *e, float *x, float *
* @param e A pointer to an Ethumb object.
* @param quality Compression quality (from 0 to 100, 100 being the best; default is 80)
*/
-EAPI void ethumb_thumb_quality_set(Ethumb *e, int quality) EINA_ARG_NONNULL(1);
+ETHUMB_API void ethumb_thumb_quality_set(Ethumb *e, int quality) EINA_ARG_NONNULL(1);
/**
* @brief Get the thumbnail compression quality.
*
* @param e A pointer to an Ethumb object.
* @return The current compression quality (from 0 to 100, 100 being the best)
*/
-EAPI int ethumb_thumb_quality_get(const Ethumb *e) EINA_ARG_NONNULL(1) EINA_WARN_UNUSED_RESULT EINA_PURE;
+ETHUMB_API int ethumb_thumb_quality_get(const Ethumb *e) EINA_ARG_NONNULL(1) EINA_WARN_UNUSED_RESULT EINA_PURE;
/**
* @brief Set the compression rate
@@ -373,7 +349,7 @@ EAPI int ethumb_thumb_quality_get(const Ethumb *e) EINA_ARG_NONNULL(1)
* @param compress the compression rate (in percentage)
*
*/
-EAPI void ethumb_thumb_compress_set(Ethumb *e, int compress) EINA_ARG_NONNULL(1);
+ETHUMB_API void ethumb_thumb_compress_set(Ethumb *e, int compress) EINA_ARG_NONNULL(1);
/**
* @brief Get the compression rate
@@ -382,7 +358,7 @@ EAPI void ethumb_thumb_compress_set(Ethumb *e, int compress) EINA_ARG_NO
*
* @return the compression rate (in percentage)
*/
-EAPI int ethumb_thumb_compress_get(const Ethumb *e) EINA_ARG_NONNULL(1) EINA_WARN_UNUSED_RESULT EINA_PURE;
+ETHUMB_API int ethumb_thumb_compress_get(const Ethumb *e) EINA_ARG_NONNULL(1) EINA_WARN_UNUSED_RESULT EINA_PURE;
/**
* @brief set the video play start point
@@ -392,7 +368,7 @@ EAPI int ethumb_thumb_compress_get(const Ethumb *e) EINA_ARG_NONNULL(1)
* @param e handle of the current thumbnailer.
* @param start the start point (float from 0.0 to 1.0)
*/
-EAPI void ethumb_video_start_set(Ethumb *e, float start) EINA_ARG_NONNULL(1);
+ETHUMB_API void ethumb_video_start_set(Ethumb *e, float start) EINA_ARG_NONNULL(1);
/**
* @brief get the video play start point
@@ -403,7 +379,7 @@ EAPI void ethumb_video_start_set(Ethumb *e, float start) EINA_ARG_NONNUL
*
* @return the start point (float from 0.0 to 1.0)
*/
-EAPI float ethumb_video_start_get(const Ethumb *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
+ETHUMB_API float ethumb_video_start_get(const Ethumb *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
/**
* @brief Set the video time (duration) in seconds.
@@ -411,7 +387,7 @@ EAPI float ethumb_video_start_get(const Ethumb *e) EINA_WARN_UNUSED_RESUL
* @param e handle of the current thumbnailer.
* @param time the video duration in seconds
*/
-EAPI void ethumb_video_time_set(Ethumb *e, float time) EINA_ARG_NONNULL(1);
+ETHUMB_API void ethumb_video_time_set(Ethumb *e, float time) EINA_ARG_NONNULL(1);
/**
* @brief Get the video time (duration) in seconds.
@@ -419,7 +395,7 @@ EAPI void ethumb_video_time_set(Ethumb *e, float time) EINA_ARG_NONNULL(
* @param e handle of the current thumbnailer.
* @return the video duration in seconds
*/
-EAPI float ethumb_video_time_get(const Ethumb *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
+ETHUMB_API float ethumb_video_time_get(const Ethumb *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
/**
* @brief Set the video frame interval, in seconds
@@ -432,7 +408,7 @@ EAPI float ethumb_video_time_get(const Ethumb *e) EINA_WARN_UNUSED_RESULT
* @param e handle of the current thumbnailer.
* @param interval the frame display interval in seconds
*/
-EAPI void ethumb_video_interval_set(Ethumb *e, float interval) EINA_ARG_NONNULL(1);
+ETHUMB_API void ethumb_video_interval_set(Ethumb *e, float interval) EINA_ARG_NONNULL(1);
/**
* @brief Get the video frame interval, in seconds
@@ -440,7 +416,7 @@ EAPI void ethumb_video_interval_set(Ethumb *e, float interval) EINA_ARG_
* @param e handle of the current thumbnailer.
* @return the frame display interval in seconds
*/
-EAPI float ethumb_video_interval_get(const Ethumb *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
+ETHUMB_API float ethumb_video_interval_get(const Ethumb *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
/**
* @brief Set the number of times the video loops (if applicable).
@@ -448,14 +424,14 @@ EAPI float ethumb_video_interval_get(const Ethumb *e) EINA_WARN_UNUSED_RE
* @param e A pointer to an Ethumb object.
* @param ntimes The number of times the video loops.
*/
-EAPI void ethumb_video_ntimes_set(Ethumb *e, unsigned int ntimes) EINA_ARG_NONNULL(1);
+ETHUMB_API void ethumb_video_ntimes_set(Ethumb *e, unsigned int ntimes) EINA_ARG_NONNULL(1);
/**
* @brief Get the number of times the video loops (if applicable).
*
* @param e A pointer to an Ethumb object.
* @return The number of times the video loops.
*/
-EAPI unsigned int ethumb_video_ntimes_get(const Ethumb *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
+ETHUMB_API unsigned int ethumb_video_ntimes_get(const Ethumb *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
/**
* @brief Set the thumbnail framerate.
@@ -463,14 +439,14 @@ EAPI unsigned int ethumb_video_ntimes_get(const Ethumb *e) EINA_WARN_UNUSED_RESU
* @param e A pointer to an Ethumb object.
* @param fps New framerate of the thumbnail (default 10).
*/
-EAPI void ethumb_video_fps_set(Ethumb *e, unsigned int fps) EINA_ARG_NONNULL(1);
+ETHUMB_API void ethumb_video_fps_set(Ethumb *e, unsigned int fps) EINA_ARG_NONNULL(1);
/**
* @brief Get the thumbnail framerate.
*
* @param e A pointer to an Ethumb object.
* @return Current framerate of the thumbnail.
*/
-EAPI unsigned int ethumb_video_fps_get(const Ethumb *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
+ETHUMB_API unsigned int ethumb_video_fps_get(const Ethumb *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
/**
* @brief Set the page number to thumbnail in paged documents
@@ -478,7 +454,7 @@ EAPI unsigned int ethumb_video_fps_get(const Ethumb *e) EINA_WARN_UNUSED_RESULT
* @param e handle of the current thumbnailer.
* @param page the page number.
*/
-EAPI void ethumb_document_page_set(Ethumb *e, unsigned int page) EINA_ARG_NONNULL(1);
+ETHUMB_API void ethumb_document_page_set(Ethumb *e, unsigned int page) EINA_ARG_NONNULL(1);
/**
* @brief Get the page number thumbnailed in paged documents
@@ -486,7 +462,7 @@ EAPI void ethumb_document_page_set(Ethumb *e, unsigned int page) EINA_AR
* @param e handle of the current thumbnailer.
* @return the page number.
*/
-EAPI unsigned int ethumb_document_page_get(const Ethumb *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
+ETHUMB_API unsigned int ethumb_document_page_get(const Ethumb *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
/**
* @}
*/
@@ -505,7 +481,7 @@ EAPI unsigned int ethumb_document_page_get(const Ethumb *e) EINA_WARN_UNUSED_RES
* (EET or Edje for instance), @a key is the key used to locate the
* right resource inside the file. NULL if not applicable.
*/
-EAPI Eina_Bool ethumb_file_set(Ethumb *e, const char *path, const char *key) EINA_ARG_NONNULL(1, 2);
+ETHUMB_API Eina_Bool ethumb_file_set(Ethumb *e, const char *path, const char *key) EINA_ARG_NONNULL(1, 2);
/**
* @brief Get the file for which to generate thumbnails.
*
@@ -515,14 +491,14 @@ EAPI Eina_Bool ethumb_file_set(Ethumb *e, const char *path, const char *key) EIN
* can store several of them. NULL if not applicable.
* @see ethumb_file_set
*/
-EAPI void ethumb_file_get(const Ethumb *e, const char **path, const char **key) EINA_ARG_NONNULL(1);
+ETHUMB_API void ethumb_file_get(const Ethumb *e, const char **path, const char **key) EINA_ARG_NONNULL(1);
/**
* @brief Reset the source file information.
*
* @param e A pointer to an Ethumb object.
*/
-EAPI void ethumb_file_free(Ethumb *e) EINA_ARG_NONNULL(1);
+ETHUMB_API void ethumb_file_free(Ethumb *e) EINA_ARG_NONNULL(1);
/**
* @brief Generate the thumbnail.
@@ -533,7 +509,7 @@ EAPI void ethumb_file_free(Ethumb *e) EINA_ARG_NONNULL(1);
*
* @return EINA_TRUE on success and EINA_FALSE on failure
*/
-EAPI Eina_Bool ethumb_generate(Ethumb *e, Ethumb_Generate_Cb finished_cb, const void *data, Eina_Free_Cb free_data) EINA_ARG_NONNULL(1, 2);
+ETHUMB_API Eina_Bool ethumb_generate(Ethumb *e, Ethumb_Generate_Cb finished_cb, const void *data, Eina_Free_Cb free_data) EINA_ARG_NONNULL(1, 2);
/**
* @brief test if the thumbnailer exists
@@ -542,7 +518,7 @@ EAPI Eina_Bool ethumb_generate(Ethumb *e, Ethumb_Generate_Cb finished_cb, const
*
* @return EINA_TRUE if thumbnailer exists and EINA_FALSE otherwise.
*/
-EAPI Eina_Bool ethumb_exists(Ethumb *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
+ETHUMB_API Eina_Bool ethumb_exists(Ethumb *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
/**
* @brief Duplicate an thumbnailer
@@ -551,7 +527,7 @@ EAPI Eina_Bool ethumb_exists(Ethumb *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL
*
* @return a new allocated copy of the thumbnailer.
*/
-EAPI Ethumb *ethumb_dup(const Ethumb *e) EINA_ARG_NONNULL(1);
+ETHUMB_API Ethumb *ethumb_dup(const Ethumb *e) EINA_ARG_NONNULL(1);
/**
* @brief Compare two thumbnailers.
@@ -561,12 +537,12 @@ EAPI Ethumb *ethumb_dup(const Ethumb *e) EINA_ARG_NONNULL(1);
*
* @return EINA_TRUE if the thumbnailers are equal and EINA_FALSE otherwise
*/
-EAPI Eina_Bool ethumb_cmp(const Ethumb *e1, const Ethumb *e2) EINA_ARG_NONNULL(1, 2) EINA_WARN_UNUSED_RESULT EINA_PURE;
+ETHUMB_API Eina_Bool ethumb_cmp(const Ethumb *e1, const Ethumb *e2) EINA_ARG_NONNULL(1, 2) EINA_WARN_UNUSED_RESULT EINA_PURE;
-EAPI int ethumb_hash(const void *key, int key_length) EINA_ARG_NONNULL(1) EINA_WARN_UNUSED_RESULT EINA_PURE;
-EAPI int ethumb_key_cmp(const void *key1, int key1_length,
+ETHUMB_API int ethumb_hash(const void *key, int key_length) EINA_ARG_NONNULL(1) EINA_WARN_UNUSED_RESULT EINA_PURE;
+ETHUMB_API int ethumb_key_cmp(const void *key1, int key1_length,
const void *key2, int key2_length) EINA_ARG_NONNULL(1, 3) EINA_WARN_UNUSED_RESULT EINA_PURE;
-EAPI unsigned int ethumb_length(const void *key) EINA_PURE EINA_WARN_UNUSED_RESULT;
+ETHUMB_API unsigned int ethumb_length(const void *key) EINA_PURE EINA_WARN_UNUSED_RESULT;
/**
* @}
@@ -579,7 +555,4 @@ EAPI unsigned int ethumb_length(const void *key) EINA_PURE EINA_WARN_UNUSED_RESU
}
#endif
-#undef EAPI
-#define EAPI
-
#endif /* __ETHUMB_H__ */
diff --git a/src/lib/ethumb/Ethumb_Plugin.h b/src/lib/ethumb/Ethumb_Plugin.h
index 6bdc38a268..087fd6b6b5 100644
--- a/src/lib/ethumb/Ethumb_Plugin.h
+++ b/src/lib/ethumb/Ethumb_Plugin.h
@@ -5,35 +5,7 @@
#include <Ecore_Evas.h>
#include <Ethumb.h>
-#ifdef EAPI
-# undef EAPI
-#endif
-
-#ifdef _WIN32
-# ifdef EFL_BUILD
-# ifdef DLL_EXPORT
-# define EAPI __declspec(dllexport)
-# else
-# define EAPI
-# endif
-# else
-# define EAPI __declspec(dllimport)
-# endif
-#else
-# ifdef __GNUC__
-# if __GNUC__ >= 4
-# define EAPI __attribute__ ((visibility("default")))
-# else
-# define EAPI
-# endif
-# else
-# define EAPI
-# endif
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
+#include <ethumb_api.h>
typedef struct _Ethumb_Plugin Ethumb_Plugin;
@@ -47,24 +19,21 @@ struct _Ethumb_Plugin
void (*thumb_cancel)(Ethumb *, void *);
};
-EAPI Eina_Bool ethumb_plugin_register(const Ethumb_Plugin *plugin);
-EAPI Eina_Bool ethumb_plugin_unregister(const Ethumb_Plugin *plugin);
+ETHUMB_API Eina_Bool ethumb_plugin_register(const Ethumb_Plugin *plugin);
+ETHUMB_API Eina_Bool ethumb_plugin_unregister(const Ethumb_Plugin *plugin);
-EAPI void ethumb_calculate_aspect_from_ratio(Ethumb *e, float ia, int *w, int *h);
-EAPI void ethumb_calculate_aspect(Ethumb *e, int iw, int ih, int *w, int *h);
-EAPI void ethumb_calculate_fill_from_ratio(Ethumb *e, float ia, int *fx, int *fy, int *fw, int *fh);
-EAPI void ethumb_calculate_fill(Ethumb *e, int iw, int ih, int *fx, int *fy, int *fw, int *fh);
-EAPI Eina_Bool ethumb_plugin_image_resize(Ethumb *e, int w, int h);
-EAPI Eina_Bool ethumb_image_save(Ethumb *e);
-EAPI void ethumb_finished_callback_call(Ethumb *e, int result);
-EAPI Evas * ethumb_evas_get(const Ethumb *e);
-EAPI Ecore_Evas * ethumb_ecore_evas_get(const Ethumb *e);
+ETHUMB_API void ethumb_calculate_aspect_from_ratio(Ethumb *e, float ia, int *w, int *h);
+ETHUMB_API void ethumb_calculate_aspect(Ethumb *e, int iw, int ih, int *w, int *h);
+ETHUMB_API void ethumb_calculate_fill_from_ratio(Ethumb *e, float ia, int *fx, int *fy, int *fw, int *fh);
+ETHUMB_API void ethumb_calculate_fill(Ethumb *e, int iw, int ih, int *fx, int *fy, int *fw, int *fh);
+ETHUMB_API Eina_Bool ethumb_plugin_image_resize(Ethumb *e, int w, int h);
+ETHUMB_API Eina_Bool ethumb_image_save(Ethumb *e);
+ETHUMB_API void ethumb_finished_callback_call(Ethumb *e, int result);
+ETHUMB_API Evas * ethumb_evas_get(const Ethumb *e);
+ETHUMB_API Ecore_Evas * ethumb_ecore_evas_get(const Ethumb *e);
#ifdef __cplusplus
}
#endif
-#undef EAPI
-#define EAPI
-
#endif /* _ETHUMB_PLUGIN_H_ */
diff --git a/src/lib/ethumb/ethumb.c b/src/lib/ethumb/ethumb.c
index aa4e824c28..98ce96615e 100644
--- a/src/lib/ethumb/ethumb.c
+++ b/src/lib/ethumb/ethumb.c
@@ -68,7 +68,7 @@
#include "../../static_libs/buildsystem/buildsystem.h"
static Ethumb_Version _version = { VMAJ, VMIN, VMIC, VREV };
-EAPI Ethumb_Version *ethumb_version = &_version;
+ETHUMB_API Ethumb_Version *ethumb_version = &_version;
static int _log_dom = -1;
#define DBG(...) EINA_LOG_DOM_DBG(_log_dom, __VA_ARGS__)
@@ -89,7 +89,7 @@ static Eina_Hash *_plugins_ext = NULL;
static Eina_Array *_plugins = NULL;
static Eina_Prefix *_pfx = NULL;
-EAPI Eina_Bool
+ETHUMB_API Eina_Bool
ethumb_plugin_register(const Ethumb_Plugin *plugin)
{
const char * const *ext;
@@ -116,7 +116,7 @@ ethumb_plugin_register(const Ethumb_Plugin *plugin)
return EINA_TRUE;
}
-EAPI Eina_Bool
+ETHUMB_API Eina_Bool
ethumb_plugin_unregister(const Ethumb_Plugin *plugin)
{
const char * const *ext;
@@ -222,7 +222,7 @@ _ethumb_plugins_unload(void)
_plugins_loaded = EINA_FALSE;
}
-EAPI int
+ETHUMB_API int
ethumb_init(void)
{
const char *home;
@@ -297,7 +297,7 @@ ethumb_init(void)
return 0;
}
-EAPI int
+ETHUMB_API int
ethumb_shutdown(void)
{
if (initcount <= 0)
@@ -324,7 +324,7 @@ ethumb_shutdown(void)
return initcount;
}
-EAPI Ethumb *
+ETHUMB_API Ethumb *
ethumb_new(void)
{
Ethumb *ethumb;
@@ -422,7 +422,7 @@ _ethumb_frame_free(Ethumb_Frame *frame)
free(frame);
}
-EAPI void
+ETHUMB_API void
ethumb_free(Ethumb *ethumb)
{
EINA_SAFETY_ON_NULL_RETURN(ethumb);
@@ -441,7 +441,7 @@ ethumb_free(Ethumb *ethumb)
free(ethumb);
}
-EAPI void
+ETHUMB_API void
ethumb_thumb_fdo_set(Ethumb *e, Ethumb_Thumb_FDO_Size s)
{
EINA_SAFETY_ON_NULL_RETURN(e);
@@ -471,7 +471,7 @@ ethumb_thumb_fdo_set(Ethumb *e, Ethumb_Thumb_FDO_Size s)
e->category = NULL;
}
-EAPI void
+ETHUMB_API void
ethumb_thumb_size_set(Ethumb *e, int tw, int th)
{
EINA_SAFETY_ON_NULL_RETURN(e);
@@ -483,7 +483,7 @@ ethumb_thumb_size_set(Ethumb *e, int tw, int th)
e->th = th;
}
-EAPI void
+ETHUMB_API void
ethumb_thumb_size_get(const Ethumb *e, int *tw, int *th)
{
EINA_SAFETY_ON_NULL_RETURN(e);
@@ -492,7 +492,7 @@ ethumb_thumb_size_get(const Ethumb *e, int *tw, int *th)
if (th) *th = e->th;
}
-EAPI void
+ETHUMB_API void
ethumb_thumb_format_set(Ethumb *e, Ethumb_Thumb_Format f)
{
EINA_SAFETY_ON_NULL_RETURN(e);
@@ -504,14 +504,14 @@ ethumb_thumb_format_set(Ethumb *e, Ethumb_Thumb_Format f)
e->format = f;
}
-EAPI Ethumb_Thumb_Format
+ETHUMB_API Ethumb_Thumb_Format
ethumb_thumb_format_get(const Ethumb *e)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(e, 0);
return e->format;
}
-EAPI void
+ETHUMB_API void
ethumb_thumb_aspect_set(Ethumb *e, Ethumb_Thumb_Aspect a)
{
EINA_SAFETY_ON_NULL_RETURN(e);
@@ -523,14 +523,14 @@ ethumb_thumb_aspect_set(Ethumb *e, Ethumb_Thumb_Aspect a)
e->aspect = a;
}
-EAPI Ethumb_Thumb_Aspect
+ETHUMB_API Ethumb_Thumb_Aspect
ethumb_thumb_aspect_get(const Ethumb *e)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(e, 0);
return e->aspect;
}
-EAPI void
+ETHUMB_API void
ethumb_thumb_orientation_set(Ethumb *e, Ethumb_Thumb_Orientation o)
{
EINA_SAFETY_ON_NULL_RETURN(e);
@@ -548,14 +548,14 @@ ethumb_thumb_orientation_set(Ethumb *e, Ethumb_Thumb_Orientation o)
e->orientation = o;
}
-EAPI Ethumb_Thumb_Orientation
+ETHUMB_API Ethumb_Thumb_Orientation
ethumb_thumb_orientation_get(const Ethumb *e)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(e, 0);
return e->orientation;
}
-EAPI void
+ETHUMB_API void
ethumb_thumb_crop_align_set(Ethumb *e, float x, float y)
{
EINA_SAFETY_ON_NULL_RETURN(e);
@@ -565,7 +565,7 @@ ethumb_thumb_crop_align_set(Ethumb *e, float x, float y)
e->crop_y = y;
}
-EAPI void
+ETHUMB_API void
ethumb_thumb_crop_align_get(const Ethumb *e, float *x, float *y)
{
EINA_SAFETY_ON_NULL_RETURN(e);
@@ -574,7 +574,7 @@ ethumb_thumb_crop_align_get(const Ethumb *e, float *x, float *y)
if (y) *y = e->crop_y;
}
-EAPI void
+ETHUMB_API void
ethumb_thumb_quality_set(Ethumb *e, int quality)
{
EINA_SAFETY_ON_NULL_RETURN(e);
@@ -583,14 +583,14 @@ ethumb_thumb_quality_set(Ethumb *e, int quality)
e->quality = quality;
}
-EAPI int
+ETHUMB_API int
ethumb_thumb_quality_get(const Ethumb *e)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(e, 0);
return e->quality;
}
-EAPI void
+ETHUMB_API void
ethumb_thumb_compress_set(Ethumb *e, int compress)
{
EINA_SAFETY_ON_NULL_RETURN(e);
@@ -599,14 +599,14 @@ ethumb_thumb_compress_set(Ethumb *e, int compress)
e->compress = compress;
}
-EAPI int
+ETHUMB_API int
ethumb_thumb_compress_get(const Ethumb *e)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(e, 0);
return e->compress;
}
-EAPI Eina_Bool
+ETHUMB_API Eina_Bool
ethumb_frame_set(Ethumb *e, const char *theme_file, const char *group, const char *swallow)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(e, 0);
@@ -679,7 +679,7 @@ ethumb_frame_set(Ethumb *e, const char *theme_file, const char *group, const cha
return EINA_TRUE;
}
-EAPI void
+ETHUMB_API void
ethumb_frame_get(const Ethumb *e, const char **theme_file, const char **group, const char **swallow)
{
EINA_SAFETY_ON_NULL_RETURN(e);
@@ -698,7 +698,7 @@ ethumb_frame_get(const Ethumb *e, const char **theme_file, const char **group, c
}
}
-EAPI void
+ETHUMB_API void
ethumb_thumb_dir_path_set(Ethumb *e, const char *path)
{
char *sanitized_path;
@@ -710,7 +710,7 @@ ethumb_thumb_dir_path_set(Ethumb *e, const char *path)
free(sanitized_path);
}
-EAPI const char *
+ETHUMB_API const char *
ethumb_thumb_dir_path_get(const Ethumb *e)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(e, NULL);
@@ -718,7 +718,7 @@ ethumb_thumb_dir_path_get(const Ethumb *e)
return e->thumb_dir;
}
-EAPI void
+ETHUMB_API void
ethumb_thumb_category_set(Ethumb *e, const char *category)
{
EINA_SAFETY_ON_NULL_RETURN(e);
@@ -727,7 +727,7 @@ ethumb_thumb_category_set(Ethumb *e, const char *category)
eina_stringshare_replace(&e->category, category);
}
-EAPI const char *
+ETHUMB_API const char *
ethumb_thumb_category_get(const Ethumb *e)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(e, NULL);
@@ -735,7 +735,7 @@ ethumb_thumb_category_get(const Ethumb *e)
return e->category;
}
-EAPI void
+ETHUMB_API void
ethumb_video_start_set(Ethumb *e, float start)
{
EINA_SAFETY_ON_NULL_RETURN(e);
@@ -746,7 +746,7 @@ ethumb_video_start_set(Ethumb *e, float start)
e->video.start = start;
}
-EAPI float
+ETHUMB_API float
ethumb_video_start_get(const Ethumb *e)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(e, 0);
@@ -754,7 +754,7 @@ ethumb_video_start_get(const Ethumb *e)
return e->video.start;
}
-EAPI void
+ETHUMB_API void
ethumb_video_time_set(Ethumb *e, float t)
{
EINA_SAFETY_ON_NULL_RETURN(e);
@@ -763,7 +763,7 @@ ethumb_video_time_set(Ethumb *e, float t)
e->video.time = t;
}
-EAPI float
+ETHUMB_API float
ethumb_video_time_get(const Ethumb *e)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(e, 0);
@@ -771,7 +771,7 @@ ethumb_video_time_get(const Ethumb *e)
return e->video.time;
}
-EAPI void
+ETHUMB_API void
ethumb_video_interval_set(Ethumb *e, float interval)
{
EINA_SAFETY_ON_NULL_RETURN(e);
@@ -780,7 +780,7 @@ ethumb_video_interval_set(Ethumb *e, float interval)
e->video.interval = interval;
}
-EAPI float
+ETHUMB_API float
ethumb_video_interval_get(const Ethumb *e)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(e, 0);
@@ -788,7 +788,7 @@ ethumb_video_interval_get(const Ethumb *e)
return e->video.interval;
}
-EAPI void
+ETHUMB_API void
ethumb_video_ntimes_set(Ethumb *e, unsigned int ntimes)
{
EINA_SAFETY_ON_NULL_RETURN(e);
@@ -798,7 +798,7 @@ ethumb_video_ntimes_set(Ethumb *e, unsigned int ntimes)
e->video.ntimes = ntimes;
}
-EAPI unsigned int
+ETHUMB_API unsigned int
ethumb_video_ntimes_get(const Ethumb *e)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(e, 0);
@@ -806,7 +806,7 @@ ethumb_video_ntimes_get(const Ethumb *e)
return e->video.ntimes;
}
-EAPI void
+ETHUMB_API void
ethumb_video_fps_set(Ethumb *e, unsigned int fps)
{
EINA_SAFETY_ON_NULL_RETURN(e);
@@ -816,7 +816,7 @@ ethumb_video_fps_set(Ethumb *e, unsigned int fps)
e->video.fps = fps;
}
-EAPI unsigned int
+ETHUMB_API unsigned int
ethumb_video_fps_get(const Ethumb *e)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(e, 0);
@@ -824,7 +824,7 @@ ethumb_video_fps_get(const Ethumb *e)
return e->video.fps;
}
-EAPI void
+ETHUMB_API void
ethumb_document_page_set(Ethumb *e, unsigned int page)
{
EINA_SAFETY_ON_NULL_RETURN(e);
@@ -833,7 +833,7 @@ ethumb_document_page_set(Ethumb *e, unsigned int page)
e->document.page = page;
}
-EAPI unsigned int
+ETHUMB_API unsigned int
ethumb_document_page_get(const Ethumb *e)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(e, 0);
@@ -841,7 +841,7 @@ ethumb_document_page_get(const Ethumb *e)
return e->document.page;
}
-EAPI Eina_Bool
+ETHUMB_API Eina_Bool
ethumb_file_set(Ethumb *e, const char *path, const char *key)
{
char *sanitized_path;
@@ -866,7 +866,7 @@ ethumb_file_set(Ethumb *e, const char *path, const char *key)
return EINA_TRUE;
}
-EAPI void
+ETHUMB_API void
ethumb_file_get(const Ethumb *e, const char **path, const char **key)
{
EINA_SAFETY_ON_NULL_RETURN(e);
@@ -1081,7 +1081,7 @@ _ethumb_file_generate_path(Ethumb *e)
eina_stringshare_del(category);
}
-EAPI void
+ETHUMB_API void
ethumb_file_free(Ethumb *e)
{
EINA_SAFETY_ON_NULL_RETURN(e);
@@ -1094,7 +1094,7 @@ ethumb_file_free(Ethumb *e)
eina_stringshare_replace(&e->thumb_key, NULL);
}
-EAPI void
+ETHUMB_API void
ethumb_thumb_path_set(Ethumb *e, const char *path, const char *key)
{
char *sanitized_path;
@@ -1116,7 +1116,7 @@ ethumb_thumb_path_set(Ethumb *e, const char *path, const char *key)
}
}
-EAPI void
+ETHUMB_API void
ethumb_thumb_path_get(Ethumb *e, const char **path, const char **key)
{
EINA_SAFETY_ON_NULL_RETURN(e);
@@ -1127,7 +1127,7 @@ ethumb_thumb_path_get(Ethumb *e, const char **path, const char **key)
if (key) *key = e->thumb_key;
}
-EAPI void
+ETHUMB_API void
ethumb_thumb_hash(Ethumb *e)
{
EINA_SAFETY_ON_NULL_RETURN(e);
@@ -1141,7 +1141,7 @@ ethumb_thumb_hash(Ethumb *e)
}
}
-EAPI void
+ETHUMB_API void
ethumb_thumb_hash_copy(Ethumb *dst, const Ethumb *src)
{
EINA_SAFETY_ON_NULL_RETURN(dst);
@@ -1153,7 +1153,7 @@ ethumb_thumb_hash_copy(Ethumb *dst, const Ethumb *src)
dst->src_hash = eina_stringshare_ref(src->src_hash);
}
-EAPI void
+ETHUMB_API void
ethumb_calculate_aspect_from_ratio(Ethumb *e, float ia, int *w, int *h)
{
float a;
@@ -1177,7 +1177,7 @@ ethumb_calculate_aspect_from_ratio(Ethumb *e, float ia, int *w, int *h)
}
}
-EAPI void
+ETHUMB_API void
ethumb_calculate_aspect(Ethumb *e, int iw, int ih, int *w, int *h)
{
float ia;
@@ -1190,7 +1190,7 @@ ethumb_calculate_aspect(Ethumb *e, int iw, int ih, int *w, int *h)
ethumb_calculate_aspect_from_ratio(e, ia, w, h);
}
-EAPI void
+ETHUMB_API void
ethumb_calculate_fill_from_ratio(Ethumb *e, float ia, int *fx, int *fy, int *fw, int *fh)
{
float a;
@@ -1226,7 +1226,7 @@ ethumb_calculate_fill_from_ratio(Ethumb *e, float ia, int *fx, int *fy, int *fw,
}
}
-EAPI void
+ETHUMB_API void
ethumb_calculate_fill(Ethumb *e, int iw, int ih, int *fx, int *fy, int *fw, int *fh)
{
float ia;
@@ -1273,7 +1273,7 @@ _ethumb_plugin_generate(Ethumb *e)
return EINA_TRUE;
}
-EAPI Eina_Bool
+ETHUMB_API Eina_Bool
ethumb_plugin_image_resize(Ethumb *e, int w, int h)
{
Evas_Object *img;
@@ -1303,7 +1303,7 @@ ethumb_plugin_image_resize(Ethumb *e, int w, int h)
return EINA_TRUE;
}
-EAPI Eina_Bool
+ETHUMB_API Eina_Bool
ethumb_image_save(Ethumb *e)
{
Eina_Bool r;
@@ -1559,7 +1559,7 @@ _ethumb_finished_idler_cb(void *data)
return EINA_FALSE;
}
-EAPI void
+ETHUMB_API void
ethumb_finished_callback_call(Ethumb *e, int result)
{
EINA_SAFETY_ON_NULL_RETURN(e);
@@ -1572,7 +1572,7 @@ ethumb_finished_callback_call(Ethumb *e, int result)
e->pdata = NULL;
}
-EAPI Eina_Bool
+ETHUMB_API Eina_Bool
ethumb_generate(Ethumb *e, Ethumb_Generate_Cb finished_cb, const void *data, Eina_Free_Cb free_data)
{
int r;
@@ -1623,7 +1623,7 @@ ethumb_generate(Ethumb *e, Ethumb_Generate_Cb finished_cb, const void *data, Ein
return EINA_TRUE;
}
-EAPI Eina_Bool
+ETHUMB_API Eina_Bool
ethumb_exists(Ethumb *e)
{
struct stat thumb, src;
@@ -1651,7 +1651,7 @@ ethumb_exists(Ethumb *e)
return r;
}
-EAPI Evas *
+ETHUMB_API Evas *
ethumb_evas_get(const Ethumb *e)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(e, NULL);
@@ -1659,7 +1659,7 @@ ethumb_evas_get(const Ethumb *e)
return e->sub_e;
}
-EAPI Ecore_Evas *
+ETHUMB_API Ecore_Evas *
ethumb_ecore_evas_get(const Ethumb *e)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(e, NULL);
@@ -1667,7 +1667,7 @@ ethumb_ecore_evas_get(const Ethumb *e)
return e->sub_ee;
}
-EAPI Ethumb *
+ETHUMB_API Ethumb *
ethumb_dup(const Ethumb *e)
{
Ecore_Evas *ee;
@@ -1754,7 +1754,7 @@ ethumb_dup(const Ethumb *e)
if (!EINA_FLT_EQ(e1->Param, e2->Param)) \
return EINA_TRUE;
-EAPI Eina_Bool
+ETHUMB_API Eina_Bool
ethumb_cmp(const Ethumb *e1, const Ethumb *e2)
{
CHECK_FLT_DELTA(crop_x);
@@ -1781,7 +1781,7 @@ ethumb_cmp(const Ethumb *e1, const Ethumb *e2)
return EINA_FALSE;
}
-EAPI unsigned int
+ETHUMB_API unsigned int
ethumb_length(EINA_UNUSED const void *key)
{
return sizeof (Ethumb);
@@ -1795,7 +1795,7 @@ ethumb_length(EINA_UNUSED const void *key)
if (!EINA_FLT_EQ(e1->Param, e2->Param)) \
return e1->Param - e2->Param;
-EAPI int
+ETHUMB_API int
ethumb_key_cmp(const void *key1, EINA_UNUSED int key1_length,
const void *key2, EINA_UNUSED int key2_length)
{
@@ -1839,7 +1839,7 @@ ethumb_key_cmp(const void *key1, EINA_UNUSED int key1_length,
#define HASH_PARAM_D(Param) r ^= eina_hash_int64((unsigned long long int*)&e->Param, 0);
#define HASH_PARAM_F(Param) r ^= eina_hash_int32((unsigned int*) &e->Param, 0);
-EAPI int
+ETHUMB_API int
ethumb_hash(const void *key, int key_length EINA_UNUSED)
{
const Ethumb *e = key;
diff --git a/src/lib/ethumb/ethumb_api.h b/src/lib/ethumb/ethumb_api.h
new file mode 100644
index 0000000000..51e88af72c
--- /dev/null
+++ b/src/lib/ethumb/ethumb_api.h
@@ -0,0 +1,34 @@
+#ifndef _EFL_ETHUMB_API_H
+#define _EFL_ETHUMB_API_H
+
+#ifdef ETHUMB_API
+#error ETHUMB_API should not be already defined
+#endif
+
+#ifdef _WIN32
+# ifndef ETHUMB_STATIC
+# ifdef ETHUMB_BUILD
+# define ETHUMB_API __declspec(dllexport)
+# else
+# define ETHUMB_API __declspec(dllimport)
+# endif
+# else
+# define ETHUMB_API
+# endif
+# define ETHUMB_API_WEAK
+#else
+# ifdef __GNUC__
+# if __GNUC__ >= 4
+# define ETHUMB_API __attribute__ ((visibility("default")))
+# define ETHUMB_API_WEAK __attribute__ ((weak))
+# else
+# define ETHUMB_API
+# define ETHUMB_API_WEAK
+# endif
+# else
+# define ETHUMB_API
+# define ETHUMB_API_WEAK
+# endif
+#endif
+
+#endif
diff --git a/src/lib/ethumb/ethumb_private.h b/src/lib/ethumb/ethumb_private.h
index 47dba6e0ff..4823e9fff8 100644
--- a/src/lib/ethumb/ethumb_private.h
+++ b/src/lib/ethumb/ethumb_private.h
@@ -4,31 +4,7 @@
#include <Ethumb.h>
#include <Ethumb_Plugin.h>
-#ifdef EAPI
-# undef EAPI
-#endif
-
-#ifdef _WIN32
-# ifdef EFL_BUILD
-# ifdef DLL_EXPORT
-# define EAPI __declspec(dllexport)
-# else
-# define EAPI
-# endif
-# else
-# define EAPI __declspec(dllimport)
-# endif
-#else
-# ifdef __GNUC__
-# if __GNUC__ >= 4
-# define EAPI __attribute__ ((visibility("default")))
-# else
-# define EAPI
-# endif
-# else
-# define EAPI
-# endif
-#endif
+#include <ethumb_api.h>
typedef struct _Ethumb_Frame Ethumb_Frame;
@@ -80,7 +56,4 @@ struct _Ethumb
Ethumb_Plugin *plugin;
};
-#undef EAPI
-#define EAPI
-
#endif /* __ETHUMB_PRIVATE_H__ */
diff --git a/src/lib/ethumb/meson.build b/src/lib/ethumb/meson.build
index 9e39a7ab77..e62c86b789 100644
--- a/src/lib/ethumb/meson.build
+++ b/src/lib/ethumb/meson.build
@@ -18,7 +18,7 @@ ethumb_lib = library('ethumb',
dependencies: ethumb_pub_deps + ethumb_ext_deps + ethumb_deps,
include_directories : config_dir + [include_directories('.')],
install: true,
- c_args : package_c_args,
+ c_args : [package_c_args, '-DETHUMB_BUILD'],
version : meson.project_version()
)