memleak fixes

SVN revision: 8797
This commit is contained in:
tsauerbeck 2004-02-04 17:43:41 +00:00 committed by tsauerbeck
parent fcd8351553
commit 9d7fe9552c
3 changed files with 23 additions and 9 deletions

View File

@ -422,6 +422,7 @@ ecore_x_shutdown(void)
_ecore_x_filter_handler = NULL;
_ecore_x_disp = NULL;
_ecore_x_event_handlers = NULL;
_ecore_x_selection_shutdown();
if (_ecore_x_init_count < 0) _ecore_x_init_count = 0;
return _ecore_x_init_count;
}

View File

@ -183,6 +183,7 @@ void _ecore_x_event_handle_mapping_notify(XEvent *xevent);
void _ecore_x_event_handle_shape_change(XEvent *xevent);
void _ecore_x_selection_data_initialize(void);
void _ecore_x_selection_shutdown(void);
Atom _ecore_x_selection_target_atom_get(char *target);
char * _ecore_x_selection_target_get(Atom target);
void _ecore_x_selection_request_data_set(Ecore_X_Selection_Data data);

View File

@ -3,28 +3,40 @@
#include <Ecore_X.h>
#include <Ecore_Txt.h>
/* FIXME: Initialize! */
static Ecore_X_Selection_Data selections[3];
static Ecore_X_Selection_Data request_data[3];
static Ecore_X_Selection_Converter *converters;
static Ecore_X_Selection_Data selections[3] = {{0}};
static Ecore_X_Selection_Data request_data[3] = {{0}};
static Ecore_X_Selection_Converter *converters = NULL;
static int _ecore_x_selection_converter_text(char *target, void *data, int size, void **data_ret, int *size_ret);
void
_ecore_x_selection_data_initialize(void)
{
memset(selections, 0, sizeof(selections));
memset(request_data, 0, sizeof(request_data));
/* Initialize converters */
converters = NULL;
ecore_x_selection_converter_atom_add(_ecore_x_atom_text,
_ecore_x_selection_converter_text);
ecore_x_selection_converter_atom_add(_ecore_x_atom_compound_text,
_ecore_x_selection_converter_text);
ecore_x_selection_converter_atom_add(_ecore_x_atom_string,
_ecore_x_selection_converter_text);
}
void
_ecore_x_selection_shutdown(void)
{
Ecore_X_Selection_Converter *cnv = converters, *tmp;
if (!converters)
return;
/* free the selection converters */
while (cnv) {
tmp = cnv->next;
free(cnv);
cnv = tmp;
}
converters = NULL;
}
static void