forked from enlightenment/efl
Fixed wrong usage of dbus.
This was also the problem causing ethumb generated callback on the client library always return with success=1 (see ticket #337). SVN revision: 41287
This commit is contained in:
parent
f9b765ec1c
commit
116c7d3266
|
@ -90,7 +90,7 @@ struct _Ethumb_Setup
|
|||
|
||||
struct _Ethumb_Request
|
||||
{
|
||||
long id;
|
||||
int id;
|
||||
const char *file, *key;
|
||||
const char *thumb, *thumb_key;
|
||||
struct _Ethumb_Setup setup;
|
||||
|
@ -103,9 +103,9 @@ struct _Ethumb_Object
|
|||
const char *client;
|
||||
Eina_List *queue;
|
||||
int nqueue;
|
||||
long id_count;
|
||||
long max_id;
|
||||
long min_id;
|
||||
int id_count;
|
||||
int max_id;
|
||||
int min_id;
|
||||
E_DBus_Object *dbus_obj;
|
||||
};
|
||||
|
||||
|
@ -178,7 +178,7 @@ const Ecore_Getopt optdesc = {
|
|||
}
|
||||
};
|
||||
|
||||
static void _ethumb_dbus_generated_signal(struct _Ethumbd *ed, long *id, const char *thumb_path, const char *thumb_key, Eina_Bool success);
|
||||
static void _ethumb_dbus_generated_signal(struct _Ethumbd *ed, int *id, const char *thumb_path, const char *thumb_key, Eina_Bool success);
|
||||
|
||||
static int
|
||||
_ethumbd_timeout_cb(void *data)
|
||||
|
@ -212,7 +212,7 @@ _ethumbd_timeout_stop(struct _Ethumbd *ed)
|
|||
}
|
||||
|
||||
static int
|
||||
_ethumb_dbus_check_id(struct _Ethumb_Object *eobject, long id)
|
||||
_ethumb_dbus_check_id(struct _Ethumb_Object *eobject, int id)
|
||||
{
|
||||
if (id < 0 || id > MAX_ID)
|
||||
return 0;
|
||||
|
@ -226,7 +226,7 @@ _ethumb_dbus_check_id(struct _Ethumb_Object *eobject, long id)
|
|||
}
|
||||
|
||||
static void
|
||||
_ethumb_dbus_inc_max_id(struct _Ethumb_Object *eobject, long id)
|
||||
_ethumb_dbus_inc_max_id(struct _Ethumb_Object *eobject, int id)
|
||||
{
|
||||
if (eobject->min_id < 0 && eobject->max_id < 0)
|
||||
eobject->min_id = id;
|
||||
|
@ -913,7 +913,7 @@ _ethumb_dbus_queue_add_cb(E_DBus_Object *object, DBusMessage *msg)
|
|||
struct _Ethumb_Object *eobject;
|
||||
struct _Ethumbd *ed;
|
||||
struct _Ethumb_Request *request;
|
||||
long id = -1;
|
||||
dbus_int32_t id = -1;
|
||||
|
||||
dbus_message_iter_init(msg, &iter);
|
||||
dbus_message_iter_get_basic(&iter, &id);
|
||||
|
@ -959,7 +959,7 @@ _ethumb_dbus_queue_add_cb(E_DBus_Object *object, DBusMessage *msg)
|
|||
end:
|
||||
reply = dbus_message_new_method_return(msg);
|
||||
dbus_message_iter_init_append(reply, &iter);
|
||||
dbus_message_iter_append_basic(&iter, DBUS_TYPE_INT64, &id);
|
||||
dbus_message_iter_append_basic(&iter, DBUS_TYPE_INT32, &id);
|
||||
return reply;
|
||||
}
|
||||
|
||||
|
@ -968,12 +968,12 @@ _ethumb_dbus_queue_remove_cb(E_DBus_Object *object, DBusMessage *msg)
|
|||
{
|
||||
DBusMessage *reply;
|
||||
DBusMessageIter iter;
|
||||
long id;
|
||||
dbus_int32_t id;
|
||||
struct _Ethumb_Object_Data *odata;
|
||||
struct _Ethumb_Object *eobject;
|
||||
struct _Ethumb_Request *request;
|
||||
struct _Ethumbd *ed;
|
||||
int r = 0;
|
||||
dbus_bool_t r = 0;
|
||||
Eina_List *l;
|
||||
|
||||
dbus_message_iter_init(msg, &iter);
|
||||
|
@ -1083,10 +1083,10 @@ static int
|
|||
_ethumb_dbus_fdo_set(struct _Ethumb_Object *eobject, DBusMessageIter *iter, struct _Ethumb_Request *request)
|
||||
{
|
||||
int type;
|
||||
int fdo;
|
||||
dbus_int32_t fdo;
|
||||
|
||||
type = dbus_message_iter_get_arg_type(iter);
|
||||
if (type != DBUS_TYPE_INT32 && type != DBUS_TYPE_INT64)
|
||||
if (type != DBUS_TYPE_INT32)
|
||||
{
|
||||
ERR("invalid param for fdo_set.\n");
|
||||
return 0;
|
||||
|
@ -1103,7 +1103,7 @@ _ethumb_dbus_size_set(struct _Ethumb_Object *eobject, DBusMessageIter *iter, str
|
|||
{
|
||||
DBusMessageIter oiter;
|
||||
int type;
|
||||
int w, h;
|
||||
dbus_int32_t w, h;
|
||||
|
||||
type = dbus_message_iter_get_arg_type(iter);
|
||||
if (type != DBUS_TYPE_STRUCT)
|
||||
|
@ -1128,10 +1128,10 @@ static int
|
|||
_ethumb_dbus_format_set(struct _Ethumb_Object *eobject, DBusMessageIter *iter, struct _Ethumb_Request *request)
|
||||
{
|
||||
int type;
|
||||
int format;
|
||||
dbus_int32_t format;
|
||||
|
||||
type = dbus_message_iter_get_arg_type(iter);
|
||||
if (type != DBUS_TYPE_INT32 && type != DBUS_TYPE_INT64)
|
||||
if (type != DBUS_TYPE_INT32)
|
||||
{
|
||||
ERR("invalid param for format_set.\n");
|
||||
return 0;
|
||||
|
@ -1149,10 +1149,10 @@ static int
|
|||
_ethumb_dbus_aspect_set(struct _Ethumb_Object *eobject, DBusMessageIter *iter, struct _Ethumb_Request *request)
|
||||
{
|
||||
int type;
|
||||
int aspect;
|
||||
dbus_int32_t aspect;
|
||||
|
||||
type = dbus_message_iter_get_arg_type(iter);
|
||||
if (type != DBUS_TYPE_INT32 && type != DBUS_TYPE_INT64)
|
||||
if (type != DBUS_TYPE_INT32)
|
||||
{
|
||||
ERR("invalid param for aspect_set.\n");
|
||||
return 0;
|
||||
|
@ -1171,7 +1171,7 @@ _ethumb_dbus_crop_set(struct _Ethumb_Object *eobject, DBusMessageIter *iter, str
|
|||
{
|
||||
DBusMessageIter oiter;
|
||||
int type;
|
||||
float x, y;
|
||||
double x, y;
|
||||
|
||||
type = dbus_message_iter_get_arg_type(iter);
|
||||
if (type != DBUS_TYPE_STRUCT)
|
||||
|
@ -1196,10 +1196,10 @@ static int
|
|||
_ethumb_dbus_quality_set(struct _Ethumb_Object *eobject, DBusMessageIter *iter, struct _Ethumb_Request *request)
|
||||
{
|
||||
int type;
|
||||
int quality;
|
||||
dbus_int32_t quality;
|
||||
|
||||
type = dbus_message_iter_get_arg_type(iter);
|
||||
if (type != DBUS_TYPE_INT32 && type != DBUS_TYPE_INT64)
|
||||
if (type != DBUS_TYPE_INT32)
|
||||
{
|
||||
ERR("invalid param for quality_set.\n");
|
||||
return 0;
|
||||
|
@ -1218,10 +1218,10 @@ static int
|
|||
_ethumb_dbus_compress_set(struct _Ethumb_Object *eobject, DBusMessageIter *iter, struct _Ethumb_Request *request)
|
||||
{
|
||||
int type;
|
||||
int compress;
|
||||
dbus_int32_t compress;
|
||||
|
||||
type = dbus_message_iter_get_arg_type(iter);
|
||||
if (type != DBUS_TYPE_INT32 && type != DBUS_TYPE_INT64)
|
||||
if (type != DBUS_TYPE_INT32)
|
||||
{
|
||||
ERR("invalid param for compress_set.\n");
|
||||
return 0;
|
||||
|
@ -1331,10 +1331,10 @@ static int
|
|||
_ethumb_dbus_document_page_set(struct _Ethumb_Object *eobject, DBusMessageIter *iter, struct _Ethumb_Request *request)
|
||||
{
|
||||
int type;
|
||||
int document_page;
|
||||
dbus_int32_t document_page;
|
||||
|
||||
type = dbus_message_iter_get_arg_type(iter);
|
||||
if (type != DBUS_TYPE_INT32 && type != DBUS_TYPE_INT64)
|
||||
if (type != DBUS_TYPE_INT32)
|
||||
{
|
||||
ERR("invalid param for document_page_set.\n");
|
||||
return 0;
|
||||
|
@ -1406,7 +1406,7 @@ _ethumb_dbus_ethumb_setup_cb(E_DBus_Object *object, DBusMessage *msg)
|
|||
struct _Ethumbd *ed;
|
||||
struct _Ethumb_Object *eobject;
|
||||
struct _Ethumb_Request *request;
|
||||
int r = 0;
|
||||
dbus_bool_t r = 0;
|
||||
int atype;
|
||||
|
||||
dbus_message_iter_init(msg, &iter);
|
||||
|
@ -1453,15 +1453,17 @@ end:
|
|||
}
|
||||
|
||||
static void
|
||||
_ethumb_dbus_generated_signal(struct _Ethumbd *ed, long *id, const char *thumb_path, const char *thumb_key, Eina_Bool success)
|
||||
_ethumb_dbus_generated_signal(struct _Ethumbd *ed, int *id, const char *thumb_path, const char *thumb_key, Eina_Bool success)
|
||||
{
|
||||
DBusMessage *signal;
|
||||
int current;
|
||||
const char *opath;
|
||||
DBusMessageIter iter;
|
||||
Eina_Bool value;
|
||||
dbus_bool_t value;
|
||||
dbus_int32_t id32;
|
||||
|
||||
value = success;
|
||||
id32 = *id;
|
||||
|
||||
current = ed->queue.current;
|
||||
opath = ed->queue.table[current].path;
|
||||
|
@ -1469,7 +1471,7 @@ _ethumb_dbus_generated_signal(struct _Ethumbd *ed, long *id, const char *thumb_p
|
|||
"generated");
|
||||
|
||||
dbus_message_iter_init_append(signal, &iter);
|
||||
dbus_message_iter_append_basic(&iter, DBUS_TYPE_INT64, id);
|
||||
dbus_message_iter_append_basic(&iter, DBUS_TYPE_INT32, &id32);
|
||||
_ethumb_dbus_append_bytearray(&iter, thumb_path);
|
||||
_ethumb_dbus_append_bytearray(&iter, thumb_key);
|
||||
dbus_message_iter_append_basic(&iter, DBUS_TYPE_BOOLEAN, &value);
|
||||
|
@ -1480,8 +1482,8 @@ _ethumb_dbus_generated_signal(struct _Ethumbd *ed, long *id, const char *thumb_p
|
|||
|
||||
static struct _Ethumb_DBus_Method_Table _ethumb_dbus_objects_methods[] =
|
||||
{
|
||||
{ "queue_add", "xayayayay", "x", _ethumb_dbus_queue_add_cb },
|
||||
{ "queue_remove", "x", "b", _ethumb_dbus_queue_remove_cb },
|
||||
{ "queue_add", "iayayayay", "i", _ethumb_dbus_queue_add_cb },
|
||||
{ "queue_remove", "i", "b", _ethumb_dbus_queue_remove_cb },
|
||||
{ "clear_queue", "", "", _ethumb_dbus_queue_clear_cb },
|
||||
{ "ethumb_setup", "a{sv}", "b", _ethumb_dbus_ethumb_setup_cb },
|
||||
{ "delete", "", "", _ethumb_dbus_delete_cb },
|
||||
|
|
|
@ -52,7 +52,7 @@
|
|||
struct _Ethumb_Client
|
||||
{
|
||||
Ethumb *ethumb;
|
||||
long id_count;
|
||||
int id_count;
|
||||
|
||||
E_DBus_Connection *conn;
|
||||
E_DBus_Signal_Handler *name_owner_changed_handler;
|
||||
|
@ -80,7 +80,7 @@ struct _Ethumb_Client
|
|||
|
||||
struct _ethumb_pending_add
|
||||
{
|
||||
long id;
|
||||
dbus_int32_t id;
|
||||
const char *file;
|
||||
const char *key;
|
||||
const char *thumb;
|
||||
|
@ -94,7 +94,7 @@ struct _ethumb_pending_add
|
|||
|
||||
struct _ethumb_pending_remove
|
||||
{
|
||||
long id;
|
||||
dbus_int32_t id;
|
||||
void (*remove_cb)(Eina_Bool result, void *data);
|
||||
void *data;
|
||||
DBusPendingCall *pending_call;
|
||||
|
@ -103,7 +103,7 @@ struct _ethumb_pending_remove
|
|||
|
||||
struct _ethumb_pending_gen
|
||||
{
|
||||
long id;
|
||||
dbus_int32_t id;
|
||||
const char *file;
|
||||
const char *key;
|
||||
const char *thumb;
|
||||
|
@ -279,7 +279,7 @@ _ethumb_client_start_server_cb(void *data, DBusMessage *msg, DBusError *err)
|
|||
{
|
||||
Ethumb_Client *client = data;
|
||||
DBusMessageIter iter;
|
||||
unsigned int ret;
|
||||
dbus_uint32_t ret;
|
||||
int t;
|
||||
|
||||
client->pending_start_service_by_name = NULL;
|
||||
|
@ -538,7 +538,8 @@ static void
|
|||
_ethumb_client_ethumb_setup_cb(void *data, DBusMessage *msg, DBusError *error)
|
||||
{
|
||||
DBusMessageIter iter;
|
||||
int t, result = 0;
|
||||
int t;
|
||||
dbus_bool_t result = 0;
|
||||
Ethumb_Client *client = data;
|
||||
|
||||
client->pending_setup = NULL;
|
||||
|
@ -598,12 +599,13 @@ ethumb_client_ethumb_setup(Ethumb_Client *client)
|
|||
DBusMessageIter iter, aiter, diter, viter, vaiter;
|
||||
Ethumb *e = client->ethumb;
|
||||
const char *entry;
|
||||
int tw, th, format, aspect, quality, compress;
|
||||
dbus_int32_t tw, th, format, aspect, quality, compress;
|
||||
float cx, cy;
|
||||
double t;
|
||||
const char *theme_file, *group, *swallow;
|
||||
const char *directory, *category;
|
||||
float video_time;
|
||||
int document_page;
|
||||
double video_time;
|
||||
dbus_int32_t document_page;
|
||||
|
||||
EINA_SAFETY_ON_NULL_RETURN(client);
|
||||
client->ethumb_dirty = 0;
|
||||
|
@ -649,8 +651,10 @@ ethumb_client_ethumb_setup(Ethumb_Client *client)
|
|||
_open_variant_iter("crop", "(dd)", viter);
|
||||
dbus_message_iter_open_container(&viter, DBUS_TYPE_STRUCT, NULL, &vaiter);
|
||||
ethumb_thumb_crop_align_get(e, &cx, &cy);
|
||||
dbus_message_iter_append_basic(&vaiter, DBUS_TYPE_DOUBLE, &cx);
|
||||
dbus_message_iter_append_basic(&vaiter, DBUS_TYPE_DOUBLE, &cy);
|
||||
t = cx;
|
||||
dbus_message_iter_append_basic(&vaiter, DBUS_TYPE_DOUBLE, &t);
|
||||
t = cy;
|
||||
dbus_message_iter_append_basic(&vaiter, DBUS_TYPE_DOUBLE, &t);
|
||||
dbus_message_iter_close_container(&viter, &vaiter);
|
||||
_close_variant_iter(viter);
|
||||
|
||||
|
@ -708,12 +712,12 @@ static void
|
|||
_ethumb_client_generated_cb(void *data, DBusMessage *msg)
|
||||
{
|
||||
DBusMessageIter iter;
|
||||
long id = -1;
|
||||
dbus_int32_t id = -1;
|
||||
const char *thumb;
|
||||
const char *thumb_key;
|
||||
Ethumb_Client *client = data;
|
||||
int t;
|
||||
int success;
|
||||
dbus_bool_t success;
|
||||
Eina_List *l;
|
||||
int found;
|
||||
struct _ethumb_pending_gen *pending;
|
||||
|
@ -721,7 +725,7 @@ _ethumb_client_generated_cb(void *data, DBusMessage *msg)
|
|||
dbus_message_iter_init(msg, &iter);
|
||||
|
||||
t = dbus_message_iter_get_arg_type(&iter);
|
||||
if (!_dbus_iter_type_check(t, DBUS_TYPE_INT64))
|
||||
if (!_dbus_iter_type_check(t, DBUS_TYPE_INT32))
|
||||
goto end;
|
||||
dbus_message_iter_get_basic(&iter, &id);
|
||||
dbus_message_iter_next(&iter);
|
||||
|
@ -781,7 +785,7 @@ _ethumb_client_queue_add_cb(void *data, DBusMessage *msg, DBusError *error)
|
|||
{
|
||||
DBusMessageIter iter;
|
||||
int t;
|
||||
long id = -1;
|
||||
dbus_int32_t id = -1;
|
||||
struct _ethumb_pending_add *pending = data;
|
||||
struct _ethumb_pending_gen *generating;
|
||||
Ethumb_Client *client = pending->client;
|
||||
|
@ -792,7 +796,7 @@ _ethumb_client_queue_add_cb(void *data, DBusMessage *msg, DBusError *error)
|
|||
goto end;
|
||||
|
||||
t = dbus_message_iter_get_arg_type(&iter);
|
||||
if (!_dbus_iter_type_check(t, DBUS_TYPE_INT64))
|
||||
if (!_dbus_iter_type_check(t, DBUS_TYPE_INT32))
|
||||
goto end;
|
||||
|
||||
dbus_message_iter_get_basic(&iter, &id);
|
||||
|
@ -838,7 +842,7 @@ _ethumb_client_queue_add(Ethumb_Client *client, const char *file, const char *ke
|
|||
"queue_add");
|
||||
|
||||
dbus_message_iter_init_append(msg, &iter);
|
||||
dbus_message_iter_append_basic(&iter, DBUS_TYPE_INT64, &pending->id);
|
||||
dbus_message_iter_append_basic(&iter, DBUS_TYPE_INT32, &pending->id);
|
||||
_ethumb_client_dbus_append_bytearray(&iter, file);
|
||||
_ethumb_client_dbus_append_bytearray(&iter, key);
|
||||
_ethumb_client_dbus_append_bytearray(&iter, thumb);
|
||||
|
@ -858,7 +862,7 @@ _ethumb_client_queue_remove_cb(void *data, DBusMessage *msg, DBusError *error)
|
|||
{
|
||||
DBusMessageIter iter;
|
||||
int t;
|
||||
int success = 0;
|
||||
dbus_bool_t success = 0;
|
||||
struct _ethumb_pending_remove *pending = data;
|
||||
Ethumb_Client *client = pending->client;
|
||||
|
||||
|
@ -880,12 +884,13 @@ end:
|
|||
}
|
||||
|
||||
EAPI void
|
||||
ethumb_client_queue_remove(Ethumb_Client *client, long id, void (*queue_remove_cb)(Eina_Bool success, void *data), void *data)
|
||||
ethumb_client_queue_remove(Ethumb_Client *client, int id, void (*queue_remove_cb)(Eina_Bool success, void *data), void *data)
|
||||
{
|
||||
DBusMessage *msg;
|
||||
struct _ethumb_pending_remove *pending;
|
||||
Eina_List *l;
|
||||
int found;
|
||||
dbus_int32_t id32 = id;
|
||||
EINA_SAFETY_ON_NULL_RETURN(client);
|
||||
|
||||
pending = calloc(1, sizeof(*pending));
|
||||
|
@ -899,7 +904,7 @@ ethumb_client_queue_remove(Ethumb_Client *client, long id, void (*queue_remove_c
|
|||
_ethumb_dbus_objects_interface,
|
||||
"queue_remove");
|
||||
|
||||
dbus_message_append_args(msg, DBUS_TYPE_INT64, &id, DBUS_TYPE_INVALID);
|
||||
dbus_message_append_args(msg, DBUS_TYPE_INT32, &id32, DBUS_TYPE_INVALID);
|
||||
pending->pending_call = e_dbus_message_send(client->conn, msg,
|
||||
_ethumb_client_queue_remove_cb,
|
||||
-1, pending);
|
||||
|
@ -910,7 +915,7 @@ ethumb_client_queue_remove(Ethumb_Client *client, long id, void (*queue_remove_c
|
|||
while (l)
|
||||
{
|
||||
struct _ethumb_pending_add *pending = l->data;
|
||||
if (pending->id != id)
|
||||
if (pending->id != id32)
|
||||
{
|
||||
l = l->next;
|
||||
continue;
|
||||
|
@ -934,7 +939,7 @@ ethumb_client_queue_remove(Ethumb_Client *client, long id, void (*queue_remove_c
|
|||
while (l)
|
||||
{
|
||||
struct _ethumb_pending_gen *pending = l->data;
|
||||
if (pending->id != id)
|
||||
if (pending->id != id32)
|
||||
{
|
||||
l = l->next;
|
||||
continue;
|
||||
|
|
|
@ -50,7 +50,7 @@ EAPI Ethumb_Client * ethumb_client_connect(ec_connect_callback_t connect_cb, voi
|
|||
EAPI void ethumb_client_disconnect(Ethumb_Client *client);
|
||||
EAPI void ethumb_client_on_server_die_callback_set(Ethumb_Client *client, void (*on_server_die_cb)(Ethumb_Client *client, void *data), void *data);
|
||||
|
||||
EAPI void ethumb_client_queue_remove(Ethumb_Client *client, long id, void (*queue_remove_cb)(Eina_Bool success, void *data), void *data);
|
||||
EAPI void ethumb_client_queue_remove(Ethumb_Client *client, int id, void (*queue_remove_cb)(Eina_Bool success, void *data), void *data);
|
||||
EAPI void ethumb_client_queue_clear(Ethumb_Client *client);
|
||||
|
||||
EAPI void ethumb_client_fdo_set(Ethumb_Client *client, Ethumb_Thumb_FDO_Size s);
|
||||
|
|
Loading…
Reference in New Issue