ecore-evas: make the window_get apis return null without errors on failure
authorMike Blumenkrantz <zmike@osg.samsung.com>
Fri, 14 Jul 2017 22:43:06 +0000 (18:43 -0400)
committerMike Blumenkrantz <zmike@osg.samsung.com>
Fri, 14 Jul 2017 22:43:00 +0000 (18:43 -0400)
the normal usage of these is something like

if (!strcmp(engine, my_engine))
  win = window_get(ee);

which is a waste of effort since the window_get() functions all check
the engine interface internally

src/lib/ecore_evas/ecore_evas.c

index c3feb3f..6fde09b 100644 (file)
@@ -432,8 +432,8 @@ _ecore_evas_cursors_init(Ecore_Evas *ee)
    return EINA_TRUE;
 }
 
-EAPI Ecore_Evas_Interface *
-_ecore_evas_interface_get(const Ecore_Evas *ee, const char *iname)
+static Ecore_Evas_Interface *
+_ecore_evas_interface_get_internal(const Ecore_Evas *ee, const char *iname, Eina_Bool cri)
 {
    Eina_List *l;
    Ecore_Evas_Interface *i;
@@ -443,16 +443,23 @@ _ecore_evas_interface_get(const Ecore_Evas *ee, const char *iname)
 
    EINA_LIST_FOREACH(ee->engine.ifaces, l, i)
      {
-       if (!strcmp(i->name, iname))
-         return i;
+        if (!strcmp(i->name, iname))
+          return i;
      }
 
-   CRI("Ecore_Evas %p (engine: %s) does not have interface '%s'",
-        ee, ee->driver, iname);
+   if (cri)
+     CRI("Ecore_Evas %p (engine: %s) does not have interface '%s'",
+          ee, ee->driver, iname);
 
    return NULL;
 }
 
+EAPI Ecore_Evas_Interface *
+_ecore_evas_interface_get(const Ecore_Evas *ee, const char *iname)
+{
+   return _ecore_evas_interface_get_internal(ee, iname, 1);
+}
+
 /**
  * Query if a particular rendering engine target has support
  * @param  engine The engine to check support for
@@ -3831,8 +3838,8 @@ EAPI Ecore_X_Window
 ecore_evas_software_x11_window_get(const Ecore_Evas *ee)
 {
    Ecore_Evas_Interface_Software_X11 *iface;
-   iface = (Ecore_Evas_Interface_Software_X11 *)_ecore_evas_interface_get(ee, "software_x11");
-   EINA_SAFETY_ON_NULL_RETURN_VAL(iface, 0);
+   iface = (Ecore_Evas_Interface_Software_X11 *)_ecore_evas_interface_get_internal(ee, "software_x11", 0);
+   if (!iface) return 0;
 
    return iface->window_get(ee);
 }
@@ -3980,8 +3987,8 @@ EAPI Ecore_X_Window
 ecore_evas_gl_x11_window_get(const Ecore_Evas *ee)
 {
    Ecore_Evas_Interface_Gl_X11 *iface;
-   iface = (Ecore_Evas_Interface_Gl_X11 *)_ecore_evas_interface_get(ee, "gl_x11");
-   EINA_SAFETY_ON_NULL_RETURN_VAL(iface, 0);
+   iface = (Ecore_Evas_Interface_Gl_X11 *)_ecore_evas_interface_get_internal(ee, "gl_x11", 0);
+   if (!iface) return 0;
 
    return iface->window_get(ee);
 }
@@ -4413,8 +4420,8 @@ EAPI Ecore_Wl_Window *
 ecore_evas_wayland_window_get(const Ecore_Evas *ee)
 {
    Ecore_Evas_Interface_Wayland *iface;
-   iface = (Ecore_Evas_Interface_Wayland *)_ecore_evas_interface_get(ee, "wayland");
-   EINA_SAFETY_ON_NULL_RETURN_VAL(iface, NULL);
+   iface = (Ecore_Evas_Interface_Wayland *)_ecore_evas_interface_get_internal(ee, "wayland", 0);
+   if (!iface) return NULL;
 
    return iface->window_get(ee);
 }
@@ -4424,7 +4431,7 @@ ecore_evas_cocoa_window_get(const Ecore_Evas *ee)
 {
    Ecore_Evas_Interface_Cocoa *iface;
    iface = (Ecore_Evas_Interface_Cocoa *)_ecore_evas_interface_get(ee, "opengl_cocoa");
-   EINA_SAFETY_ON_NULL_RETURN_VAL(iface, NULL);
+   if (!iface) return NULL;
    return iface->window_get(ee);
 }
 
@@ -4432,8 +4439,8 @@ EAPI Ecore_Wl2_Window *
 ecore_evas_wayland2_window_get(const Ecore_Evas *ee)
 {
    Ecore_Evas_Interface_Wayland *iface;
-   iface = (Ecore_Evas_Interface_Wayland *)_ecore_evas_interface_get(ee, "wayland");
-   EINA_SAFETY_ON_NULL_RETURN_VAL(iface, NULL);
+   iface = (Ecore_Evas_Interface_Wayland *)_ecore_evas_interface_get_internal(ee, "wayland", 0);
+   if (!iface) return NULL;
 
    return iface->window2_get(ee);
 }
@@ -4535,7 +4542,7 @@ ecore_evas_win32_window_get(const Ecore_Evas *ee)
 {
    Ecore_Evas_Interface_Win32 *iface;
    iface = (Ecore_Evas_Interface_Win32 *)_ecore_evas_interface_get(ee, "win32");
-   EINA_SAFETY_ON_NULL_RETURN_VAL(iface, NULL);
+   if (!iface) return NULL;
 
    return iface->window_get(ee);
 }