backport ecore-x fix.
authorraster <raster@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Wed, 10 Oct 2012 09:17:33 +0000 (09:17 +0000)
committerraster <raster@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Wed, 10 Oct 2012 09:17:33 +0000 (09:17 +0000)
git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/branches/ecore-1.7@77733 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

AUTHORS
ChangeLog
NEWS
src/lib/ecore_x/xcb/ecore_xcb_events.c
src/lib/ecore_x/xcb/ecore_xcb_selection.c
src/lib/ecore_x/xlib/ecore_x_events.c
src/lib/ecore_x/xlib/ecore_x_selection.c

diff --git a/AUTHORS b/AUTHORS
index 1ab381b..f8dbba0 100644 (file)
--- a/AUTHORS
+++ b/AUTHORS
@@ -54,3 +54,4 @@ Jérémy Zurcher <jeremy@asynk.ch>
 Vikram Narayanan <vikram186@gmail.com>
 Patryk Kaczmarek <patryk.k@samsung.com>
 Daniel Willmann <d.willmann@samsung.com>
+Michal Pakula vel Rutka <m.pakula@samsung.com>
index e0ca69f..0d7feb5 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
 2012-10-05  Cedric Bail
 
        * Properly reschedule call to curl.
+
+2012-10-10 Michal Pakula vel Rutka
+
+       * Fix: Send ECORE_X_EVENT_SELECTION_NOTIFY even if there is no data.
diff --git a/NEWS b/NEWS
index 22f0b37..7559bd5 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -10,7 +10,8 @@ Fixes:
     * ecore_x_image_is_argb32_get() returns correctly given endianness.
     * ecore_imf ibus module potential segv fixed.
     * ecore_thread_feedback() memory allocation and corruption fixed.
-    
+    * send ECORE_X_EVENT_SELECTION_NOTIFY even if there is no data.
+
 Changes since Ecore 1.2.0:
 --------------------------
 
index 9ccd52c..c4fbf7a 100644 (file)
@@ -1348,13 +1348,9 @@ _ecore_xcb_event_handle_selection_notify(xcb_generic_event_t *event)
           }
      }
    else
-     {
-        format =
-          ecore_x_window_prop_property_get(ev->requestor, ev->property,
-                                           XCB_GET_PROPERTY_TYPE_ANY, 8,
-                                           &data, &num);
-        if (!format) return;
-     }
+     format = ecore_x_window_prop_property_get(ev->requestor, ev->property,
+                                               XCB_GET_PROPERTY_TYPE_ANY, 8,
+                                               &data, &num);
 
    e = calloc(1, sizeof(Ecore_X_Event_Selection_Notify));
    if (!e) return;
index afb1b8c..76ffa17 100644 (file)
@@ -755,7 +755,7 @@ _ecore_xcb_selection_parser_text(const char *target __UNUSED__,
    sel = calloc(1, sizeof(Ecore_X_Selection_Data_Text));
    if (!sel) return NULL;
 
-   if (_data[size - 1])
+   if (data && data[size - 1])
      {
         size++;
         t = realloc(_data, size);
@@ -797,7 +797,7 @@ _ecore_xcb_selection_parser_files(const char *target,
 
    ECORE_XCB_SELECTION_DATA(sel)->free = _ecore_xcb_selection_data_files_free;
 
-   if (_data[size - 1])
+   if (data && data[size - 1])
      {
         size++;
         t = realloc(_data, size);
index 7d685cf..2e780aa 100644 (file)
@@ -1415,14 +1415,10 @@ _ecore_x_event_handle_selection_notify(XEvent *xevent)
           }
      }
    else
-     {
-        format = ecore_x_window_prop_property_get(xevent->xselection.requestor,
-                                                  xevent->xselection.property,
-                                                  AnyPropertyType, 8, &data,
-                                                  &num_ret);
-        if (!format)
-          return;
-     }
+     format = ecore_x_window_prop_property_get(xevent->xselection.requestor,
+                                               xevent->xselection.property,
+                                               AnyPropertyType, 8, &data,
+                                               &num_ret);
 
    e = calloc(1, sizeof(Ecore_X_Event_Selection_Notify));
    if (!e)
index fa177c3..67b5bb3 100644 (file)
@@ -817,7 +817,7 @@ _ecore_x_selection_parser_files(const char *target,
    if (!sel) return NULL;
    ECORE_X_SELECTION_DATA(sel)->free = _ecore_x_selection_data_files_free;
 
-   if (data[size - 1])
+   if (data && data[size - 1])
      {
         /* Isn't nul terminated */
         size++;
@@ -916,7 +916,7 @@ _ecore_x_selection_parser_text(const char *target __UNUSED__,
 
    sel = calloc(1, sizeof(Ecore_X_Selection_Data_Text));
    if (!sel) return NULL;
-   if (data[size - 1])
+   if (data && data[size - 1])
      {
         /* Isn't nul terminated */
         size++;