Enlightenment CVS committal

Author  : ningerso
Project : e17
Module  : libs/ecore

Dir     : e17/libs/ecore/src/lib/ecore_x


Modified Files:
        Ecore_X.h ecore_x_events.c ecore_x_private.h 
        ecore_x_selection.c ecore_x_window_prop.c 


Log Message:
Allow data formats other than the specified format when fetching properties.
Pass the actual data format along with property data.

===================================================================
RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_x/Ecore_X.h,v
retrieving revision 1.173
retrieving revision 1.174
diff -u -3 -r1.173 -r1.174
--- Ecore_X.h   13 Sep 2006 17:45:12 -0000      1.173
+++ Ecore_X.h   29 Sep 2006 05:49:13 -0000      1.174
@@ -563,6 +563,7 @@
    } content;
    unsigned char    *data;
    int               length;
+   int               format;
 
    int             (*free)(void *data);
 };
@@ -1001,7 +1002,7 @@
 EAPI void             ecore_x_selection_converter_atom_add(Ecore_X_Atom 
target, int (*func)(char *target, void *data, int size, void **data_ret, int 
*size_ret));
 EAPI void             ecore_x_selection_converter_del(char *target);
 EAPI void             ecore_x_selection_converter_atom_del(Ecore_X_Atom 
target);
-EAPI void             ecore_x_selection_parser_add(const char *target, void 
*(*func)(const char *target, unsigned char *data, int size));
+EAPI void             ecore_x_selection_parser_add(const char *target, void 
*(*func)(const char *target, unsigned char *data, int size, int format));
 EAPI void             ecore_x_selection_parser_del(const char *target);
 
 EAPI void             ecore_x_dnd_aware_set(Ecore_X_Window win, int on);
===================================================================
RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_x/ecore_x_events.c,v
retrieving revision 1.85
retrieving revision 1.86
diff -u -3 -r1.85 -r1.86
--- ecore_x_events.c    28 Sep 2006 18:56:03 -0000      1.85
+++ ecore_x_events.c    29 Sep 2006 05:49:13 -0000      1.86
@@ -1160,27 +1160,26 @@
    unsigned char                    *data = NULL;
    Ecore_X_Atom                     selection;
    int                              num_ret;
+   int                              format;
 
    selection = xevent->xselection.selection;
 
    if (xevent->xselection.target == ECORE_X_ATOM_SELECTION_TARGETS)
      {
-       if (!ecore_x_window_prop_property_get(xevent->xselection.requestor,
-                                             xevent->xselection.property,
-                                             XA_ATOM, 32, &data, &num_ret))
+       format = ecore_x_window_prop_property_get(xevent->xselection.requestor,
+                                               xevent->xselection.property,
+                                               XA_ATOM, 32, &data, &num_ret);
+       if (!format)
          return;
      }
    else
      {
-       if (!ecore_x_window_prop_property_get(xevent->xselection.requestor,
-                                             xevent->xselection.property,
-                                             AnyPropertyType, 8, &data, 
&num_ret))
-         {
-            if (!ecore_x_window_prop_property_get(xevent->xselection.requestor,
-                                             xevent->xselection.property,
-                                             AnyPropertyType, 16, &data, 
&num_ret))
-              return;
-         }
+       format = ecore_x_window_prop_property_get(xevent->xselection.requestor,
+                                               xevent->xselection.property,
+                                               AnyPropertyType, 8, &data,
+                                               &num_ret);
+       if (!format)
+         return;
      }
 
    e = calloc(1, sizeof(Ecore_X_Event_Selection_Notify));
@@ -1202,7 +1201,7 @@
        free(e);
        return;
      }
-   e->data = _ecore_x_selection_parse(e->target, data, num_ret);
+   e->data = _ecore_x_selection_parse(e->target, data, num_ret, format);
 
    ecore_event_add(ECORE_X_EVENT_SELECTION_NOTIFY, e, 
_ecore_x_event_free_selection_notify, NULL);
 }
===================================================================
RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_x/ecore_x_private.h,v
retrieving revision 1.54
retrieving revision 1.55
diff -u -3 -r1.54 -r1.55
--- ecore_x_private.h   19 May 2006 06:05:35 -0000      1.54
+++ ecore_x_private.h   29 Sep 2006 05:49:13 -0000      1.55
@@ -90,7 +90,7 @@
 struct _Ecore_X_Selection_Parser
 {
    char     *target;
-   void *(*parse)(const char *target, unsigned char *data, int size);
+   void *(*parse)(const char *target, unsigned char *data, int size, int 
format);
    Ecore_X_Selection_Parser *next;
 };
 
@@ -215,7 +215,7 @@
       _ecore_x_selection_get(Ecore_X_Atom selection);
 int   _ecore_x_selection_set(Window w, unsigned char *data, int len, 
Ecore_X_Atom selection);
 int   _ecore_x_selection_convert(Ecore_X_Atom selection, Ecore_X_Atom target, 
void **data_ret);
-void *_ecore_x_selection_parse(const char *target, unsigned char *data, int 
size);
+void *_ecore_x_selection_parse(const char *target, unsigned char *data, int 
size, int format);
 
 void _ecore_x_sync_magic_send(int val, Ecore_X_Window swin);
 void _ecore_x_window_grab_remove(Ecore_X_Window win);
===================================================================
RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_x/ecore_x_selection.c,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -3 -r1.29 -r1.30
--- ecore_x_selection.c 14 Jul 2006 09:37:11 -0000      1.29
+++ ecore_x_selection.c 29 Sep 2006 05:49:14 -0000      1.30
@@ -13,11 +13,11 @@
 
 static int _ecore_x_selection_converter_text(char *target, void *data, int 
size, void **data_ret, int *size_ret);
 static int _ecore_x_selection_data_default_free(void *data);
-static void *_ecore_x_selection_parser_files(const char *target, unsigned char 
*data, int size);
+static void *_ecore_x_selection_parser_files(const char *target, unsigned char 
*data, int size, int format);
 static int _ecore_x_selection_data_files_free(void *data);
-static void *_ecore_x_selection_parser_text(const char *target, unsigned char 
*data, int size);
+static void *_ecore_x_selection_parser_text(const char *target, unsigned char 
*data, int size, int format);
 static int _ecore_x_selection_data_text_free(void *data);
-static void *_ecore_x_selection_parser_targets(const char *target, unsigned 
char *data, int size);
+static void *_ecore_x_selection_parser_targets(const char *target, unsigned 
char *data, int size, int format);
 static int _ecore_x_selection_data_targets_free(void *data);
 
 #define ECORE_X_SELECTION_DATA(x) ((Ecore_X_Selection_Data *)(x))
@@ -523,7 +523,7 @@
 
 EAPI void
 ecore_x_selection_parser_add(const char *target,
-      void *(*func)(const char *target, unsigned char *data, int size))
+      void *(*func)(const char *target, unsigned char *data, int size, int 
format))
 {
    Ecore_X_Selection_Parser *prs;
 
@@ -586,7 +586,7 @@
 
 /* Locate and run conversion callback for specified selection target */
 void *
-_ecore_x_selection_parse(const char *target, unsigned char *data, int size)
+_ecore_x_selection_parse(const char *target, unsigned char *data, int size, 
int format)
 {
    Ecore_X_Selection_Parser *prs;
    Ecore_X_Selection_Data *sel;
@@ -595,7 +595,7 @@
      {
        if (!strcmp(prs->target, target))
          {
-            sel = prs->parse(target, data, size);
+            sel = prs->parse(target, data, size, format);
             return sel;
          }
      }
@@ -604,6 +604,7 @@
    sel = calloc(1, sizeof(Ecore_X_Selection_Data));
    sel->free = _ecore_x_selection_data_default_free;
    sel->length = size;
+   sel->format = format;
    sel->data = data;
    return sel;
 }
@@ -620,7 +621,7 @@
 }
 
 static void *
-_ecore_x_selection_parser_files(const char *target, unsigned char *data, int 
size)
+_ecore_x_selection_parser_files(const char *target, unsigned char *data, int 
size, int format)
 {
    Ecore_X_Selection_Data_Files *sel;
    int i, is;
@@ -703,7 +704,7 @@
 }
 
 static void *
-_ecore_x_selection_parser_text(const char *target __UNUSED__, unsigned char 
*data, int size)
+_ecore_x_selection_parser_text(const char *target __UNUSED__, unsigned char 
*data, int size, int format)
 {
    Ecore_X_Selection_Data_Text *sel;
 
@@ -736,7 +737,7 @@
 }
 
 static void *
-_ecore_x_selection_parser_targets(const char *target __UNUSED__, unsigned char 
*data, int size)
+_ecore_x_selection_parser_targets(const char *target __UNUSED__, unsigned char 
*data, int size, int format)
 {
    Ecore_X_Selection_Data_Targets *sel;
    unsigned long *targets;
===================================================================
RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_x/ecore_x_window_prop.c,v
retrieving revision 1.80
retrieving revision 1.81
diff -u -3 -r1.80 -r1.81
--- ecore_x_window_prop.c       6 Jan 2006 20:22:09 -0000       1.80
+++ ecore_x_window_prop.c       29 Sep 2006 05:49:14 -0000      1.81
@@ -457,17 +457,17 @@
    if (ret != Success)
        return 0;
 
-   if (size != size_ret || !num_ret) {
+   if (!num_ret) {
       XFree(prop_ret);
       return 0;
    }
    
-   if (!(*data = malloc(num_ret * size / 8))) {
+   if (!(*data = malloc(num_ret * size_ret / 8))) {
       XFree(prop_ret);
       return 0;
    }
    
-   switch (size) {
+   switch (size_ret) {
       case 8:
         for (i = 0; i < num_ret; i++)
           (*data)[i] = prop_ret[i];
@@ -485,7 +485,7 @@
    XFree(prop_ret);
 
    if (num) *num = num_ret;
-   return 1;
+   return size_ret;
 }
 
 EAPI void



-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to