Evas is gone

SVN revision: 14256
This commit is contained in:
sebastid 2005-04-20 09:20:33 +00:00 committed by sebastid
parent 81c0fa87f7
commit 9734b7c5da
5 changed files with 96 additions and 73 deletions

View File

@ -2,8 +2,7 @@ MAINTAINERCLEANFILES = Makefile.in
INCLUDES = \
-I$(top_srcdir)/src/lib/ecore \
-I$(top_builddir)/src/lib/ecore \
@evas_cflags@
-I$(top_builddir)/src/lib/ecore
libecore_file_la_LDFLAGS = -version-info 1:0:0 \
-L$(top_builddir)/src/lib/ecore/.libs
@ -23,8 +22,7 @@ ecore_file_monitor_poll.c
libecore_file_la_LIBADD = \
$(top_builddir)/src/lib/ecore/libecore.la \
@fam_libs@ \
@evas_libs@
@fam_libs@
endif

View File

@ -27,12 +27,13 @@ struct _Ecore_File_Monitor_Fam
struct _Ecore_File
{
Ecore_Oldlist __list_data;
char *name;
};
static Ecore_Fd_Handler *_fdh = NULL;
static FAMConnection *_fc = NULL;
static Evas_List *_monitors = NULL;
static Ecore_Oldlist *_monitors = NULL;
static int _ecore_file_monitor_fam_handler(void *data, Ecore_Fd_Handler *fdh);
static Ecore_File *_ecore_file_monitor_fam_file_find(Ecore_File_Monitor *em, char *name);
@ -54,10 +55,16 @@ ecore_file_monitor_fam_init(void)
int
ecore_file_monitor_fam_shutdown(void)
{
Evas_List *l;
for (l = _monitors; l; l = l->next)
ecore_file_monitor_fam_del(ECORE_FILE_MONITOR(l->data));
evas_list_free(_monitors);
Ecore_Oldlist *l;
for (l = _monitors; l;)
{
Ecore_File_Monitor *em;
em = ECORE_FILE_MONITOR(l);
l = l->next;
ecore_file_monitor_fam_del(em);
}
if (_fdh) ecore_main_fd_handler_del(_fdh);
if (_fc)
{
@ -112,7 +119,7 @@ ecore_file_monitor_fam_add(const char *path,
return NULL;
}
_monitors = evas_list_append(_monitors, em);
_monitors = _ecore_list_append(_monitors, em);
return em;
}
@ -120,19 +127,18 @@ ecore_file_monitor_fam_add(const char *path,
void
ecore_file_monitor_fam_del(Ecore_File_Monitor *em)
{
Evas_List *l;
Ecore_Oldlist *l;
for (l = em->files; l; l = l->next)
{
Ecore_File *f;
f = l->data;
f = (Ecore_File *)l;
free(f->name);
free(f);
}
evas_list_free(em->files);
_monitors = evas_list_remove(_monitors, em);
_monitors = _ecore_list_remove(_monitors, em);
if (ECORE_FILE_MONITOR_FAM(em)->request)
{
@ -251,8 +257,6 @@ _ecore_file_monitor_fam_handler(void *data, Ecore_Fd_Handler *fdh)
static Ecore_File *
_ecore_file_monitor_fam_file_find(Ecore_File_Monitor *em, char *name)
{
Evas_List *l;
for (l = em->files; l; l = l->next)
{
Ecore_File *f;

View File

@ -26,7 +26,7 @@ struct _Ecore_File_Monitor_Inotify
};
static Ecore_Fd_Handler *_fdh = NULL;
static Evas_List *_monitors = NULL;
static Ecore_Oldlist *_monitors = NULL;
static int _ecore_file_monitor_inotify_handler(void *data, Ecore_Fd_Handler *fdh);
static Ecore_File_Monitor *_ecore_file_monitor_inotify_monitor_find(int wd);
@ -49,6 +49,7 @@ ecore_file_monitor_inotify_init(void)
close(fd);
return 0;
}
return 1;
}
@ -56,6 +57,16 @@ int
ecore_file_monitor_inotify_shutdown(void)
{
int fd;
Ecore_Oldlist *l;
for (l = _monitors; l;)
{
Ecore_File_Monitor *em;
em = ECORE_FILE_MONITOR(l);
l = l->next;
ecore_file_monitor_inotify_del(em);
}
if (_fdh)
{
@ -112,7 +123,7 @@ ecore_file_monitor_inotify_add(const char *path,
return NULL;
}
_monitors = evas_list_append(_monitors, em);
_monitors = _ecore_list_append(_monitors, em);
return em;
}
@ -122,7 +133,7 @@ ecore_file_monitor_inotify_del(Ecore_File_Monitor *em)
{
int fd;
_monitors = evas_list_remove(_monitors, em);
_monitors = _ecore_list_remove(_monitors, em);
fd = ecore_main_fd_handler_fd_get(_fdh);
if (ECORE_FILE_MONITOR_INOTIFY(em)->wd)
@ -160,13 +171,14 @@ _ecore_file_monitor_inotify_handler(void *data, Ecore_Fd_Handler *fdh)
static Ecore_File_Monitor *
_ecore_file_monitor_inotify_monitor_find(int wd)
{
Evas_List *l;
Ecore_Oldlist *l;
for (l = _monitors; l; l = l->next)
{
Ecore_File_Monitor *em;
em = l->data;
em = ECORE_FILE_MONITOR(l);
if (ECORE_FILE_MONITOR_INOTIFY(em)->wd == wd)
return em;
}

View File

@ -28,6 +28,7 @@ struct _Ecore_File_Monitor_Poll
struct _Ecore_File
{
Ecore_Oldlist __list_data;
char *name;
int mtime;
unsigned char is_dir;
@ -37,9 +38,9 @@ struct _Ecore_File
#define ECORE_FILE_INTERVAL_STEP 0.5
#define ECORE_FILE_INTERVAL_MAX 5.0
static double _interval = ECORE_FILE_INTERVAL_MIN;
static Ecore_Timer *_timer = NULL;
static Evas_List *_monitors = NULL;
static double _interval = ECORE_FILE_INTERVAL_MIN;
static Ecore_Timer *_timer = NULL;
static Ecore_Oldlist *_monitors = NULL;
static int _lock = 0;
static int _ecore_file_monitor_poll_handler(void *data);
@ -55,16 +56,17 @@ ecore_file_monitor_poll_init(void)
int
ecore_file_monitor_poll_shutdown(void)
{
Evas_List *l;
Ecore_Oldlist *l;
for (l = _monitors; l;)
{
Ecore_File_Monitor *em;
em = l->data;
em = ECORE_FILE_MONITOR(l);
l = l->next;
ecore_file_monitor_del(em);
ecore_file_monitor_poll_del(em);
}
evas_list_free(_monitors);
if (_timer)
{
ecore_timer_del(_timer);
@ -112,25 +114,28 @@ ecore_file_monitor_poll_add(const char *path,
char *file;
files = ecore_file_ls(em->path);
while ((file = ecore_list_next(files)))
if (files)
{
Ecore_File *f;
char buf[PATH_MAX];
f = calloc(1, sizeof(Ecore_File));
if (!f)
while ((file = ecore_list_next(files)))
{
free(file);
continue;
}
Ecore_File *f;
char buf[PATH_MAX];
snprintf(buf, sizeof(buf), "%s/%s", em->path, file);
f->name = file;
f->mtime = ecore_file_mod_time(buf);
f->is_dir = ecore_file_is_dir(buf);
em->files = evas_list_append(em->files, f);
f = calloc(1, sizeof(Ecore_File));
if (!f)
{
free(file);
continue;
}
snprintf(buf, sizeof(buf), "%s/%s", em->path, file);
f->name = file;
f->mtime = ecore_file_mod_time(buf);
f->is_dir = ecore_file_is_dir(buf);
em->files = _ecore_list_append(em->files, f);
}
ecore_list_destroy(files);
}
ecore_list_destroy(files);
}
}
else
@ -139,7 +144,7 @@ ecore_file_monitor_poll_add(const char *path,
return NULL;
}
_monitors = evas_list_append(_monitors, em);
_monitors = _ecore_list_append(_monitors, em);
return em;
}
@ -147,7 +152,7 @@ ecore_file_monitor_poll_add(const char *path,
void
ecore_file_monitor_poll_del(Ecore_File_Monitor *em)
{
Evas_List *l;
Ecore_Oldlist *l;
if (_lock)
{
@ -156,16 +161,18 @@ ecore_file_monitor_poll_del(Ecore_File_Monitor *em)
}
/* Remove files */
for (l = em->files; l; l = l->next)
for (l = em->files; l;)
{
Ecore_File *f;
f = l->data;
free(f->name);
free(f);
}
evas_list_free(em->files);
Ecore_File *file;
file = (Ecore_File *)l;
l = l->next;
free(file->name);
free(file);
}
_monitors = _ecore_list_remove(_monitors, em);
_monitors = evas_list_remove(_monitors, em);
free(em->path);
free(em);
@ -181,29 +188,30 @@ ecore_file_monitor_poll_del(Ecore_File_Monitor *em)
static int
_ecore_file_monitor_poll_handler(void *data __UNUSED__)
{
Evas_List *monitor;
Ecore_Oldlist *l;
_interval += ECORE_FILE_INTERVAL_STEP;
_lock = 1;
for (monitor = _monitors; monitor;)
for (l = _monitors; l; l = l->next)
{
Ecore_File_Monitor *em;
em = monitor->data;
monitor = monitor->next;
em = ECORE_FILE_MONITOR(l);
_ecore_file_monitor_poll_check(em);
}
_lock = 0;
if (_interval > ECORE_FILE_INTERVAL_MAX)
_interval = ECORE_FILE_INTERVAL_MAX;
ecore_timer_interval_set(_timer, _interval);
for (monitor = _monitors; monitor;)
for (l = _monitors; l;)
{
Ecore_File_Monitor *em;
em = monitor->data;
monitor = monitor->next;
em = ECORE_FILE_MONITOR(l);
l = l->next;
if (ECORE_FILE_MONITOR_POLL(em)->deleted)
ecore_file_monitor_del(em);
}
@ -220,7 +228,7 @@ _ecore_file_monitor_poll_check(Ecore_File_Monitor *em)
is_dir = ecore_file_is_dir(em->path);
if (mtime < ECORE_FILE_MONITOR_POLL(em)->mtime)
{
Evas_List *l;
Ecore_Oldlist *l;
Ecore_File_Event event;
/* Notify all files deleted */
@ -229,8 +237,9 @@ _ecore_file_monitor_poll_check(Ecore_File_Monitor *em)
Ecore_File *f;
char buf[PATH_MAX];
f = l->data;
f = (Ecore_File *)l;
l = l->next;
snprintf(buf, sizeof(buf), "%s/%s", em->path, f->name);
if (f->is_dir)
event = ECORE_FILE_EVENT_DELETED_DIRECTORY;
@ -240,13 +249,13 @@ _ecore_file_monitor_poll_check(Ecore_File_Monitor *em)
free(f->name);
free(f);
}
em->files = evas_list_free(em->files);
em->files = NULL;
em->func(em->data, em, ECORE_FILE_EVENT_DELETED_SELF, em->path);
_interval = ECORE_FILE_INTERVAL_MIN;
}
else
{
Evas_List *l;
Ecore_Oldlist *l;
/* Check for changed files */
for (l = em->files; l;)
@ -256,8 +265,9 @@ _ecore_file_monitor_poll_check(Ecore_File_Monitor *em)
int mtime;
Ecore_File_Event event;
f = l->data;
f = (Ecore_File *)l;
l = l->next;
snprintf(buf, sizeof(buf), "%s/%s", em->path, f->name);
mtime = ecore_file_mod_time(buf);
if (mtime < f->mtime)
@ -268,7 +278,7 @@ _ecore_file_monitor_poll_check(Ecore_File_Monitor *em)
event = ECORE_FILE_EVENT_DELETED_FILE;
em->func(em->data, em, event, buf);
em->files = evas_list_remove(em->files, f);
em->files = _ecore_list_remove(em->files, f);
free(f->name);
free(f);
_interval = ECORE_FILE_INTERVAL_MIN;
@ -317,7 +327,7 @@ _ecore_file_monitor_poll_check(Ecore_File_Monitor *em)
else
event = ECORE_FILE_EVENT_CREATED_FILE;
em->func(em->data, em, event, buf);
em->files = evas_list_append(em->files, f);
em->files = _ecore_list_append(em->files, f);
}
ecore_list_destroy(files);
if (!ecore_file_is_dir(em->path))
@ -331,13 +341,13 @@ _ecore_file_monitor_poll_check(Ecore_File_Monitor *em)
static int
_ecore_file_monitor_poll_checking(Ecore_File_Monitor *em, char *name)
{
Evas_List *l;
Ecore_Oldlist *l;
for (l = em->files; l; l = l->next)
{
Ecore_File *f;
f = l->data;
f = (Ecore_File *)l;
if (!strcmp(f->name, name))
return 1;
}

View File

@ -4,11 +4,9 @@
#include <stdio.h>
#include <string.h>
/* FIXME: ecore_file's internals shouldnt use evas imho */
#include <Evas.h>
#include "config.h"
#include "ecore_private.h"
#include "Ecore.h"
#include "Ecore_File.h"
@ -19,6 +17,7 @@ int ecore_file_monitor_shutdown(void);
struct _Ecore_File_Monitor
{
Ecore_Oldlist __list_data;
void (*func) (void *data,
Ecore_File_Monitor *ecore_file_monitor,
Ecore_File_Event event,
@ -26,7 +25,7 @@ struct _Ecore_File_Monitor
char *path;
void *data;
Evas_List *files;
Ecore_Oldlist *files;
};
#ifdef HAVE_INOTIFY