shuffle around registering/unregistering of views and view models as per cK's

suggestion
remove unneeded function
remove comments for obvious one liners


SVN revision: 6008
This commit is contained in:
Till Adam 2002-03-02 10:20:07 +00:00
parent 4302d0b872
commit e45338be4d
5 changed files with 44 additions and 37 deletions

View File

@ -22,11 +22,26 @@ e_view_machine_init()
D_RETURN;
}
void
e_view_machine_register_view_model (E_View_Model *m)
{
D_ENTER;
VM->models = evas_list_append(VM->models, m);
D_RETURN;
}
void
e_view_machine_unregister_view_model(E_View_Model *m)
{
D_ENTER;
VM->models = evas_list_remove(VM->models, m);
D_RETURN;
}
void
e_view_machine_register_view(E_View *v)
{
D_ENTER;
/* Add view to the list of views */
VM->views = evas_list_append(VM->views, v);
D_RETURN;
}
@ -35,28 +50,20 @@ void
e_view_machine_unregister_view(E_View *v)
{
D_ENTER;
/* Remove the view from the global list of views
* and from the list of its model. */
VM->views = evas_list_remove(VM->views, v);
v->model->views = evas_list_remove(v->model->views, v);
e_object_unref (E_OBJECT(v->model));
D_RETURN;
}
void
e_view_machine_close_all_views(void)
{
Evas_List l,ll;
Evas_List l;
D_ENTER;
/* Copy the list of views and unregister them */
for (l=VM->views;l;l=l->next)
{
ll = evas_list_append(ll, l->data);
}
for (l=ll;l;l=l->next)
{
E_View *v = l->data;
e_view_machine_unregister_view(v);
e_object_unref (E_OBJECT(v->model));
}
D_RETURN;
}
@ -83,8 +90,6 @@ e_view_machine_model_lookup(char *path)
D("Model for this dir already exists\n");
IF_FREE(realpath);
e_object_ref (E_OBJECT(m));
D_RETURN_(m);
}
}
@ -120,3 +125,4 @@ e_view_machine_get_view_by_base_window(Window win)
}
D_RETURN_(NULL);
}

View File

@ -12,6 +12,9 @@ typedef struct _e_view_machine E_View_Machine;
void e_view_machine_init(void);
void e_view_machine_register_view(E_View *v);
void e_view_machine_unregister_view(E_View *v);
void e_view_machine_register_view_model(E_View_Model *m);
void e_view_machine_unregister_view_model(E_View_Model *m);
void e_view_machine_close_all_views(void);
E_View_Model *e_view_machine_model_lookup(char *path);
E_View *e_view_machine_get_view_by_main_window(Window win);

View File

@ -19,7 +19,6 @@ static void e_view_model_handle_efsd_event_reply_getmeta (EfsdEvent *ev);
static void e_view_model_cleanup(E_View_Model *m);
static void e_view_model_bg_reload_timeout(int val, void *data);
static void e_view_model_set_default_background(E_View_Model *m);
static void e_view_model_redraw_views(E_View_Model *m);
void
e_view_model_init(void)
@ -42,7 +41,7 @@ e_view_model_cleanup(E_View_Model *m)
e_fs_del_restart_handler(m->restarter);
m->restarter = NULL;
VM->models = evas_list_remove(VM->models, m);
e_view_machine_unregister_view_model(m);
e_object_cleanup(E_OBJECT(m));
@ -64,28 +63,27 @@ e_view_model_new (void)
e_object_init(E_OBJECT(m),
(E_Cleanup_Func) e_view_model_cleanup);
e_view_machine_register_view_model(m);
D_RETURN_(m);
}
static void
e_view_model_redraw_views(E_View_Model *m)
void
e_view_model_register_view(E_View_Model *m, E_View *v)
{
Evas_List l;
E_View *v;
D_ENTER;
v->model = m;
m->views = evas_list_append(m->views, v);
e_object_ref (E_OBJECT(v->model));
D_RETURN;
}
if (!m)
D_RETURN;
/* set the dirty flag of all views. the next time the idle
* handler calls update_views, they'll be redrawn */
for (l = m->views; l; l=l->next)
{
v = l->data;
v->changed = 1;
}
D_RETURN;
void
e_view_model_unregister_view(E_View *v)
{
D_ENTER;
v->model->views = evas_list_remove(v->model->views, v);
e_object_unref (E_OBJECT(v->model));
D_RETURN;
}
static void

View File

@ -54,6 +54,8 @@ void e_view_model_set_dir(E_View_Model *m, char *dir);
E_View_Model * e_view_model_new(void);
void e_view_model_init(void);
void e_view_model_register_view(E_View_Model *m,E_View *v);
void e_view_model_unregister_view(E_View *v);
E_View_Model * e_view_model_find_by_monitor_id(int id);

View File

@ -1457,8 +1457,6 @@ e_view_cleanup(E_View *v)
* not via a timeout, because we will destroy the object after this.*/
e_view_geometry_record(v);
e_view_machine_unregister_view(v);
if (v->iconbar)
{
e_iconbar_save_out_final(v->iconbar);
@ -1472,6 +1470,9 @@ e_view_cleanup(E_View *v)
snprintf(name, PATH_MAX, "resort_timer.%s", v->name);
ecore_del_event_timer(name);
/* unregister with the underlying model and the global list of views */
e_view_model_unregister_view(v);
e_view_machine_unregister_view(v);
/* FIXME: clean up the rest!!! this leaks ... */
/* Call the destructor of the base class */
@ -1551,9 +1552,7 @@ e_view_set_dir(E_View *v, char *path, int is_desktop)
if (!(m = e_view_machine_model_lookup(path)))
{
D("Model for this dir doesn't exist, make a new one\n");
m = e_view_model_new();
VM->models = evas_list_append(VM->models, m);
e_view_model_set_dir(m, path);
snprintf(buf, PATH_MAX, "%s/.e_background.bg.db", m->dir);
@ -1574,8 +1573,7 @@ e_view_set_dir(E_View *v, char *path, int is_desktop)
if (m)
{
v->model = m;
v->model->views = evas_list_append(v->model->views, v);
e_view_model_register_view(m, v);
/* FIXME do a real naming scheme here */
snprintf(buf, PATH_MAX, "%s:%d", v->model->dir, e_object_get_usecount(E_OBJECT(v->model)));
e_strdup(v->name, buf);