cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=2260b9e328eb46fe028d46efd06f15d7dd7b15dd

commit 2260b9e328eb46fe028d46efd06f15d7dd7b15dd
Author: Cedric BAIL <ced...@osg.samsung.com>
Date:   Tue Apr 14 21:26:17 2015 +0200

    evas: split software backend use of ector surface in an attempt to fix 
windows build.
---
 src/Makefile_Evas.am                               |   2 +-
 .../evas/engines/software_generic/ector_surface.c  | 104 +++++++++++++++++++++
 .../evas/engines/software_generic/evas_engine.c    |  99 +-------------------
 3 files changed, 107 insertions(+), 98 deletions(-)

diff --git a/src/Makefile_Evas.am b/src/Makefile_Evas.am
index ca5bf93..620e02f 100644
--- a/src/Makefile_Evas.am
+++ b/src/Makefile_Evas.am
@@ -529,7 +529,7 @@ if EVAS_STATIC_BUILD_SOFTWARE_GENERIC
 BUILT_SOURCES += \
 modules/evas/engines/software_generic/ector_cairo_software_surface.eo.c \
 modules/evas/engines/software_generic/ector_cairo_software_surface.eo.h
-lib_evas_libevas_la_SOURCES += 
modules/evas/engines/software_generic/evas_engine.c 
modules/evas/engines/software_generic/Evas_Engine_Software_Generic.h
+lib_evas_libevas_la_SOURCES += 
modules/evas/engines/software_generic/evas_engine.c 
modules/evas/engines/software_generic/ector_surface.c 
modules/evas/engines/software_generic/Evas_Engine_Software_Generic.h
 lib_evas_libevas_la_LIBADD +=
 else
 enginesoftwaregenericpkgdir = 
$(libdir)/evas/modules/engines/software_generic/$(MODULE_ARCH)
diff --git a/src/modules/evas/engines/software_generic/ector_surface.c 
b/src/modules/evas/engines/software_generic/ector_surface.c
new file mode 100644
index 0000000..17edc95
--- /dev/null
+++ b/src/modules/evas/engines/software_generic/ector_surface.c
@@ -0,0 +1,104 @@
+#ifdef HAVE_CONFIG_H
+#include "config.h"  /* so that EAPI in Evas.h is correctly defined */
+#endif
+
+#include <Ector.h>
+
+#include <cairo/Ector_Cairo.h>
+#include <software/Ector_Software.h>
+
+#include "ector_cairo_software_surface.eo.h"
+
+#define USE(Obj, Sym, Error)                            \
+  if (!Sym) Sym = _ector_cairo_symbol_get(Obj, #Sym);   \
+  if (!Sym) return Error;
+
+static inline void *
+_ector_cairo_symbol_get(Eo *ector_surface, const char *name)
+{
+   void *sym;
+
+   eo_do(ector_surface,
+         sym = ector_cairo_surface_symbol_get(name));
+   return sym;
+}
+
+typedef struct _cairo_surface_t cairo_surface_t;
+typedef enum {
+  CAIRO_FORMAT_INVALID   = -1,
+  CAIRO_FORMAT_ARGB32    = 0,
+  CAIRO_FORMAT_RGB24     = 1,
+  CAIRO_FORMAT_A8        = 2,
+  CAIRO_FORMAT_A1        = 3,
+  CAIRO_FORMAT_RGB16_565 = 4,
+  CAIRO_FORMAT_RGB30     = 5
+} cairo_format_t;
+
+static cairo_surface_t *(*cairo_image_surface_create_for_data)(unsigned char 
*data,
+                                                               cairo_format_t 
format,
+                                                               int width,
+                                                               int height,
+                                                               int stride) = 
NULL;
+static void (*cairo_surface_destroy)(cairo_surface_t *surface) = NULL;
+static cairo_t *(*cairo_create)(cairo_surface_t *target) = NULL;
+static void (*cairo_destroy)(cairo_t *cr) = NULL;
+
+typedef struct _Ector_Cairo_Software_Surface_Data 
Ector_Cairo_Software_Surface_Data;
+struct _Ector_Cairo_Software_Surface_Data
+{
+   cairo_surface_t *surface;
+   cairo_t *ctx;
+
+   void *pixels;
+
+   unsigned int width;
+   unsigned int height;
+};
+
+void
+_ector_cairo_software_surface_surface_set(Eo *obj, 
Ector_Cairo_Software_Surface_Data *pd, void *pixels, unsigned int width, 
unsigned int height)
+{
+   USE(obj, cairo_image_surface_create_for_data, );
+   USE(obj, cairo_surface_destroy, );
+   USE(obj, cairo_create, );
+   USE(obj, cairo_destroy, );
+
+   if (pd->surface) cairo_surface_destroy(pd->surface); pd->surface = NULL;
+   if (pd->ctx) cairo_destroy(pd->ctx); pd->ctx = NULL;
+
+   pd->pixels = NULL;
+   pd->width = 0;
+   pd->height = 0;
+
+   if (pixels)
+     {
+        pd->surface = cairo_image_surface_create_for_data(pixels,
+                                                          CAIRO_FORMAT_ARGB32,
+                                                          width, height, width 
* sizeof (int));
+        if (!pd->surface) goto end;
+
+        pd->ctx = cairo_create(pd->surface);
+        if (!pd->ctx) goto end;
+     }
+
+   pd->pixels = pixels;
+   pd->width = width;
+   pd->height = height;
+
+ end:
+   evas_common_cpu_end_opt();
+
+   eo_do(obj,
+         ector_cairo_surface_context_set(pd->ctx),
+         ector_surface_size_set(pd->width, pd->height));
+}
+
+void
+_ector_cairo_software_surface_surface_get(Eo *obj EINA_UNUSED, 
Ector_Cairo_Software_Surface_Data *pd, void **pixels, unsigned int *width, 
unsigned int *height)
+{
+   if (pixels) *pixels = pd->pixels;
+   if (width) *width = pd->width;
+   if (height) *height = pd->height;
+}
+
+#include "ector_cairo_software_surface.eo.c"
diff --git a/src/modules/evas/engines/software_generic/evas_engine.c 
b/src/modules/evas/engines/software_generic/evas_engine.c
index a5faae3..af26cb6 100644
--- a/src/modules/evas/engines/software_generic/evas_engine.c
+++ b/src/modules/evas/engines/software_generic/evas_engine.c
@@ -5,6 +5,8 @@
 #include "evas_cs2_private.h"
 #endif
 
+#include <software/Ector_Software.h>
+
 #ifdef HAVE_DLSYM
 # include <dlfcn.h>      /* dlopen,dlclose,etc */
 
@@ -18,9 +20,6 @@
 
 #include "Evas_Engine_Software_Generic.h"
 
-#include "cairo/Ector_Cairo.h"
-#include "software/Ector_Software.h"
-
 #include "ector_cairo_software_surface.eo.h"
 
 #ifdef EVAS_GL
@@ -4996,97 +4995,3 @@ void evas_engine_software_generic_shutdown(void)
 #ifndef EVAS_STATIC_BUILD_SOFTWARE_GENERIC
 EVAS_EINA_MODULE_DEFINE(engine, software_generic);
 #endif
-
-#define USE(Obj, Sym, Error)                            \
-  if (!Sym) Sym = _ector_cairo_symbol_get(Obj, #Sym);   \
-  if (!Sym) return Error;
-
-static inline void *
-_ector_cairo_symbol_get(Eo *ector_surface, const char *name)
-{
-   void *sym;
-
-   eo_do(ector_surface,
-         sym = ector_cairo_surface_symbol_get(name));
-   return sym;
-}
-
-typedef struct _cairo_surface_t cairo_surface_t;
-typedef enum {
-  CAIRO_FORMAT_INVALID   = -1,
-  CAIRO_FORMAT_ARGB32    = 0,
-  CAIRO_FORMAT_RGB24     = 1,
-  CAIRO_FORMAT_A8        = 2,
-  CAIRO_FORMAT_A1        = 3,
-  CAIRO_FORMAT_RGB16_565 = 4,
-  CAIRO_FORMAT_RGB30     = 5
-} cairo_format_t;
-
-static cairo_surface_t *(*cairo_image_surface_create_for_data)(unsigned char 
*data,
-                                                               cairo_format_t 
format,
-                                                               int width,
-                                                               int height,
-                                                               int stride) = 
NULL;
-static void (*cairo_surface_destroy)(cairo_surface_t *surface) = NULL;
-static cairo_t *(*cairo_create)(cairo_surface_t *target) = NULL;
-static void (*cairo_destroy)(cairo_t *cr) = NULL;
-
-typedef struct _Ector_Cairo_Software_Surface_Data 
Ector_Cairo_Software_Surface_Data;
-struct _Ector_Cairo_Software_Surface_Data
-{
-   cairo_surface_t *surface;
-   cairo_t *ctx;
-
-   void *pixels;
-
-   unsigned int width;
-   unsigned int height;
-};
-
-void
-_ector_cairo_software_surface_surface_set(Eo *obj, 
Ector_Cairo_Software_Surface_Data *pd, void *pixels, unsigned int width, 
unsigned int height)
-{
-   USE(obj, cairo_image_surface_create_for_data, );
-   USE(obj, cairo_surface_destroy, );
-   USE(obj, cairo_create, );
-   USE(obj, cairo_destroy, );
-
-   if (pd->surface) cairo_surface_destroy(pd->surface); pd->surface = NULL;
-   if (pd->ctx) cairo_destroy(pd->ctx); pd->ctx = NULL;
-
-   pd->pixels = NULL;
-   pd->width = 0;
-   pd->height = 0;
-
-   if (pixels)
-     {
-        pd->surface = cairo_image_surface_create_for_data(pixels,
-                                                          CAIRO_FORMAT_ARGB32,
-                                                          width, height, width 
* sizeof (int));
-        if (!pd->surface) goto end;
-
-        pd->ctx = cairo_create(pd->surface);
-        if (!pd->ctx) goto end;
-     }
-
-   pd->pixels = pixels;
-   pd->width = width;
-   pd->height = height;
-
- end:
-   evas_common_cpu_end_opt();
-
-   eo_do(obj,
-         ector_cairo_surface_context_set(pd->ctx),
-         ector_surface_size_set(pd->width, pd->height));
-}
-
-void
-_ector_cairo_software_surface_surface_get(Eo *obj EINA_UNUSED, 
Ector_Cairo_Software_Surface_Data *pd, void **pixels, unsigned int *width, 
unsigned int *height)
-{
-   if (pixels) *pixels = pd->pixels;
-   if (width) *width = pd->width;
-   if (height) *height = pd->height;
-}
-
-#include "ector_cairo_software_surface.eo.c"

-- 


Reply via email to