Ethumb *ethumb;
int id_count;
+ Ethumb *old_ethumb_conf;
E_DBus_Connection *conn;
E_DBus_Signal_Handler *name_owner_changed_handler;
E_DBus_Signal_Handler *generated_signal;
EINA_REFCOUNT;
- Eina_Bool ethumb_dirty : 1;
Eina_Bool connected : 1;
Eina_Bool server_started : 1;
};
if (client->pending_start_service_by_name)
dbus_pending_call_cancel(client->pending_start_service_by_name);
+ if (client->old_ethumb_conf)
+ ethumb_free(client->old_ethumb_conf);
+
ethumb_free(client->ethumb);
e_dbus_signal_handler_del(client->conn, client->name_owner_changed_handler);
Ethumb *tmp = async->source->ethumb;
async->source->ethumb = async->dup;
- async->source->ethumb_dirty = ethumb_cmp(tmp, async->dup);
EINA_LIST_FREE(async->callbacks, cb)
{
goto err;
}
+ eclient->old_ethumb_conf = NULL;
eclient->connect.cb = connect_cb;
eclient->connect.data = (void *)data;
eclient->connect.free_data = free_data;
EINA_SAFETY_ON_NULL_RETURN(client);
EINA_SAFETY_ON_FALSE_RETURN(client->connected);
- client->ethumb_dirty = 0;
msg = dbus_message_new_method_call(_ethumb_dbus_bus_name,
client->object_path,
{
EINA_SAFETY_ON_NULL_RETURN(client);
- client->ethumb_dirty = 1;
+ if (!client->old_ethumb_conf)
+ client->old_ethumb_conf = ethumb_dup(client->ethumb);
ethumb_thumb_fdo_set(client->ethumb, s);
}
{
EINA_SAFETY_ON_NULL_RETURN(client);
- client->ethumb_dirty = 1;
+ if (!client->old_ethumb_conf)
+ client->old_ethumb_conf = ethumb_dup(client->ethumb);
ethumb_thumb_size_set(client->ethumb, tw, th);
}
{
EINA_SAFETY_ON_NULL_RETURN(client);
- client->ethumb_dirty = 1;
+ if (!client->old_ethumb_conf)
+ client->old_ethumb_conf = ethumb_dup(client->ethumb);
ethumb_thumb_format_set(client->ethumb, f);
}
{
EINA_SAFETY_ON_NULL_RETURN(client);
- client->ethumb_dirty = 1;
+ if (!client->old_ethumb_conf)
+ client->old_ethumb_conf = ethumb_dup(client->ethumb);
ethumb_thumb_aspect_set(client->ethumb, a);
}
{
EINA_SAFETY_ON_NULL_RETURN(client);
- client->ethumb_dirty = 1;
+ if (!client->old_ethumb_conf)
+ client->old_ethumb_conf = ethumb_dup(client->ethumb);
ethumb_thumb_orientation_set(client->ethumb, o);
}
{
EINA_SAFETY_ON_NULL_RETURN(client);
- client->ethumb_dirty = 1;
+ if (!client->old_ethumb_conf)
+ client->old_ethumb_conf = ethumb_dup(client->ethumb);
ethumb_thumb_crop_align_set(client->ethumb, x, y);
}
{
EINA_SAFETY_ON_NULL_RETURN_VAL(client, 0);
- client->ethumb_dirty = 1;
+ if (!client->old_ethumb_conf)
+ client->old_ethumb_conf = ethumb_dup(client->ethumb);
return ethumb_frame_set(client->ethumb, file, group, swallow);
}
{
EINA_SAFETY_ON_NULL_RETURN(client);
- client->ethumb_dirty = 1;
+ if (!client->old_ethumb_conf)
+ client->old_ethumb_conf = ethumb_dup(client->ethumb);
ethumb_thumb_dir_path_set(client->ethumb, path);
}
{
EINA_SAFETY_ON_NULL_RETURN(client);
- client->ethumb_dirty = 1;
+ if (!client->old_ethumb_conf)
+ client->old_ethumb_conf = ethumb_dup(client->ethumb);
ethumb_thumb_category_set(client->ethumb, category);
}
{
EINA_SAFETY_ON_NULL_RETURN(client);
- client->ethumb_dirty = 1;
+ if (!client->old_ethumb_conf)
+ client->old_ethumb_conf = ethumb_dup(client->ethumb);
ethumb_video_time_set(client->ethumb, t);
}
EINA_SAFETY_ON_FALSE_RETURN(start >= 0.0);
EINA_SAFETY_ON_FALSE_RETURN(start <= 1.0);
- client->ethumb_dirty = 1;
+ if (!client->old_ethumb_conf)
+ client->old_ethumb_conf = ethumb_dup(client->ethumb);
ethumb_video_start_set(client->ethumb, start);
}
{
EINA_SAFETY_ON_NULL_RETURN(client);
- client->ethumb_dirty = 1;
+ if (!client->old_ethumb_conf)
+ client->old_ethumb_conf = ethumb_dup(client->ethumb);
ethumb_video_interval_set(client->ethumb, interval);
}
EINA_SAFETY_ON_NULL_RETURN(client);
EINA_SAFETY_ON_FALSE_RETURN(ntimes > 0);
- client->ethumb_dirty = 1;
+ if (!client->old_ethumb_conf)
+ client->old_ethumb_conf = ethumb_dup(client->ethumb);
ethumb_video_ntimes_set(client->ethumb, ntimes);
}
EINA_SAFETY_ON_NULL_RETURN(client);
EINA_SAFETY_ON_FALSE_RETURN(fps > 0);
- client->ethumb_dirty = 1;
+ if (!client->old_ethumb_conf)
+ client->old_ethumb_conf = ethumb_dup(client->ethumb);
ethumb_video_fps_set(client->ethumb, fps);
}
{
EINA_SAFETY_ON_NULL_RETURN(client);
- client->ethumb_dirty = 1;
+ if (!client->old_ethumb_conf)
+ client->old_ethumb_conf = ethumb_dup(client->ethumb);
ethumb_document_page_set(client->ethumb, page);
}
ethumb_thumb_path_get(client->ethumb, &thumb, &thumb_key);
- if (client->ethumb_dirty)
- ethumb_client_ethumb_setup(client);
+ if (client->old_ethumb_conf &&
+ ethumb_cmp(client->old_ethumb_conf, client->ethumb))
+ {
+ ethumb_client_ethumb_setup(client);
+ ethumb_free(client->old_ethumb_conf);
+ client->old_ethumb_conf = NULL;
+ }
id = _ethumb_client_queue_add(client, file, key, thumb, thumb_key,
generated_cb, data, free_data);