mirror of
https://github.com/brl/mutter.git
synced 2024-11-25 09:30:45 -05:00
return TRUE when the window is actually freed.
Wed May 24 12:57:32 2006 Søren Sandmann <sandmann@redhat.com> * src/c-window.c (meta_comp_window_free): return TRUE when the window is actually freed. * src/compositor.c (do_effect): Disable updating before exploding the window. * src/c-window.c: Make MetaCompWindow refcounted. * src/c-window.[ch]: New functions meta_comp_window_{show,hide} * src/c-screen.c (meta_comp_screen_unmap): Call meta_comp_window_hide() instead of directly setting the viewable status of the node. * src/c-screen.c (meta_comp_screen_remove_window): Only remove the window when it is actually freed.
This commit is contained in:
parent
22bc36eb3b
commit
3f4e194c8f
23
ChangeLog
23
ChangeLog
@ -1,3 +1,26 @@
|
|||||||
|
Wed May 24 12:57:32 2006 Søren Sandmann <sandmann@redhat.com>
|
||||||
|
|
||||||
|
* src/c-window.c (meta_comp_window_free): return TRUE when the
|
||||||
|
window is actually freed.
|
||||||
|
|
||||||
|
* src/compositor.c (do_effect): Disable updating before exploding
|
||||||
|
the window.
|
||||||
|
|
||||||
|
* src/c-window.c: Make MetaCompWindow refcounted.
|
||||||
|
|
||||||
|
* src/c-window.[ch]: New functions meta_comp_window_{show,hide}
|
||||||
|
|
||||||
|
* src/c-screen.c (meta_comp_screen_unmap): Call
|
||||||
|
meta_comp_window_hide() instead of directly setting the viewable
|
||||||
|
status of the node.
|
||||||
|
|
||||||
|
* src/c-screen.c (meta_comp_screen_remove_window): Only remove the
|
||||||
|
window when it is actually freed.
|
||||||
|
|
||||||
|
Wed May 24 12:45:21 2006 Søren Sandmann <sandmann@redhat.com>
|
||||||
|
|
||||||
|
* src/c-screen.c: Delete unused meta_comp_screen_hide_window().
|
||||||
|
|
||||||
2006-05-23 Adam Jackson <ajax@freedesktop.org>
|
2006-05-23 Adam Jackson <ajax@freedesktop.org>
|
||||||
|
|
||||||
* src/c-window.c:
|
* src/c-window.c:
|
||||||
|
@ -565,14 +565,16 @@ meta_comp_screen_remove_window (MetaCompScreen *info,
|
|||||||
MetaCompWindow *comp_window = meta_comp_window_lookup (info, xwindow);
|
MetaCompWindow *comp_window = meta_comp_window_lookup (info, xwindow);
|
||||||
|
|
||||||
if (comp_window)
|
if (comp_window)
|
||||||
|
{
|
||||||
|
if (meta_comp_window_free (comp_window))
|
||||||
{
|
{
|
||||||
CmNode *node = meta_comp_window_get_node (comp_window);
|
CmNode *node = meta_comp_window_get_node (comp_window);
|
||||||
|
|
||||||
cm_stacker_remove_child (info->stacker, node);
|
cm_stacker_remove_child (info->stacker, node);
|
||||||
meta_comp_window_free (comp_window);
|
|
||||||
|
|
||||||
g_hash_table_remove (info->windows_by_xid, (gpointer)xwindow);
|
g_hash_table_remove (info->windows_by_xid, (gpointer)xwindow);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -636,14 +638,10 @@ void
|
|||||||
meta_comp_screen_unmap (MetaCompScreen *info,
|
meta_comp_screen_unmap (MetaCompScreen *info,
|
||||||
Window xwindow)
|
Window xwindow)
|
||||||
{
|
{
|
||||||
CmDrawableNode *node = CM_DRAWABLE_NODE (find_node (info, xwindow));
|
MetaCompWindow *window = find_comp_window (info, xwindow);
|
||||||
|
|
||||||
#if 0
|
if (window)
|
||||||
g_print ("unmapping: %lx\n", xwindow);
|
meta_comp_window_hide (window);
|
||||||
#endif
|
|
||||||
|
|
||||||
if (node)
|
|
||||||
cm_drawable_node_set_viewable (node, FALSE);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -657,14 +655,5 @@ meta_comp_screen_set_target_rect (MetaCompScreen *info,
|
|||||||
cm_drawable_node_set_scale_rect (node, rect);
|
cm_drawable_node_set_scale_rect (node, rect);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
meta_comp_screen_hide_window (MetaCompScreen *info,
|
|
||||||
Window xwindow)
|
|
||||||
{
|
|
||||||
CmDrawableNode *node = CM_DRAWABLE_NODE (find_node (info, xwindow));
|
|
||||||
|
|
||||||
cm_drawable_node_set_viewable (node, FALSE);
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -45,8 +45,6 @@ void meta_comp_screen_set_target_rect (MetaCompScreen *info,
|
|||||||
void meta_comp_screen_set_explode (MetaCompScreen *info,
|
void meta_comp_screen_set_explode (MetaCompScreen *info,
|
||||||
Window xwindow,
|
Window xwindow,
|
||||||
gdouble level);
|
gdouble level);
|
||||||
void meta_comp_screen_hide_window (MetaCompScreen *info,
|
|
||||||
Window xwindow);
|
|
||||||
void meta_comp_screen_unmap (MetaCompScreen *info,
|
void meta_comp_screen_unmap (MetaCompScreen *info,
|
||||||
Window xwindow);
|
Window xwindow);
|
||||||
MetaCompWindow *meta_comp_screen_lookup_window (MetaCompScreen *info,
|
MetaCompWindow *meta_comp_screen_lookup_window (MetaCompScreen *info,
|
||||||
|
@ -172,8 +172,8 @@ has_counter (MetaCompWindow *comp_window)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
void
|
||||||
show_node (MetaCompWindow *comp_window)
|
meta_comp_window_show (MetaCompWindow *comp_window)
|
||||||
{
|
{
|
||||||
if (comp_window->animation_in_progress)
|
if (comp_window->animation_in_progress)
|
||||||
comp_window->hide_after_animation = FALSE;
|
comp_window->hide_after_animation = FALSE;
|
||||||
@ -182,8 +182,8 @@ show_node (MetaCompWindow *comp_window)
|
|||||||
cm_drawable_node_update_pixmap (CM_DRAWABLE_NODE (comp_window->node));
|
cm_drawable_node_update_pixmap (CM_DRAWABLE_NODE (comp_window->node));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
void
|
||||||
hide_node (MetaCompWindow *comp_window)
|
meta_comp_window_hide (MetaCompWindow *comp_window)
|
||||||
{
|
{
|
||||||
if (comp_window->animation_in_progress)
|
if (comp_window->animation_in_progress)
|
||||||
{
|
{
|
||||||
@ -213,7 +213,7 @@ meta_comp_window_new (MetaDisplay *display,
|
|||||||
window->counter_value = 1;
|
window->counter_value = 1;
|
||||||
window->ref_count = 1;
|
window->ref_count = 1;
|
||||||
|
|
||||||
hide_node (window);
|
meta_comp_window_hide (window);
|
||||||
|
|
||||||
return window;
|
return window;
|
||||||
}
|
}
|
||||||
@ -226,7 +226,7 @@ comp_window_ref (MetaCompWindow *comp_window)
|
|||||||
return comp_window;
|
return comp_window;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static gboolean
|
||||||
comp_window_unref (MetaCompWindow *comp_window)
|
comp_window_unref (MetaCompWindow *comp_window)
|
||||||
{
|
{
|
||||||
if (--comp_window->ref_count == 0)
|
if (--comp_window->ref_count == 0)
|
||||||
@ -236,13 +236,17 @@ comp_window_unref (MetaCompWindow *comp_window)
|
|||||||
if (comp_window->alarm)
|
if (comp_window->alarm)
|
||||||
g_object_unref (comp_window->alarm);
|
g_object_unref (comp_window->alarm);
|
||||||
g_free (comp_window);
|
g_free (comp_window);
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
gboolean
|
||||||
meta_comp_window_free (MetaCompWindow *window)
|
meta_comp_window_free (MetaCompWindow *window)
|
||||||
{
|
{
|
||||||
comp_window_unref (window);
|
return comp_window_unref (window);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -389,7 +393,7 @@ on_request_alarm (WsSyncAlarm *alarm,
|
|||||||
g_print ("alarm for %p\n", comp_window);
|
g_print ("alarm for %p\n", comp_window);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
show_node (comp_window);
|
meta_comp_window_show (comp_window);
|
||||||
|
|
||||||
g_object_unref (alarm);
|
g_object_unref (alarm);
|
||||||
}
|
}
|
||||||
@ -497,7 +501,7 @@ meta_comp_window_refresh_attrs (MetaCompWindow *comp_window)
|
|||||||
#if 0
|
#if 0
|
||||||
g_print ("directly showing %p\n", comp_window);
|
g_print ("directly showing %p\n", comp_window);
|
||||||
#endif
|
#endif
|
||||||
show_node (comp_window);
|
meta_comp_window_show (comp_window);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -513,7 +517,7 @@ meta_comp_window_refresh_attrs (MetaCompWindow *comp_window)
|
|||||||
g_print ("unmapping %p\n", node);
|
g_print ("unmapping %p\n", node);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
hide_node (comp_window);
|
meta_comp_window_hide (comp_window);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -579,18 +583,13 @@ update_explosion (gpointer data)
|
|||||||
CmDrawableNode *node = CM_DRAWABLE_NODE (info->comp_window->node);
|
CmDrawableNode *node = CM_DRAWABLE_NODE (info->comp_window->node);
|
||||||
gdouble elapsed = g_timer_elapsed (info->timer, NULL);
|
gdouble elapsed = g_timer_elapsed (info->timer, NULL);
|
||||||
|
|
||||||
if (!cm_drawable_node_get_viewable (node))
|
if (!cm_drawable_node_get_viewable (node) || elapsed > EXPLODE_TIME)
|
||||||
{
|
|
||||||
g_print ("huh, how did that happen to %p?\n", node);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (elapsed > EXPLODE_TIME)
|
|
||||||
{
|
{
|
||||||
meta_effect_end (info->effect);
|
meta_effect_end (info->effect);
|
||||||
|
|
||||||
info->comp_window->animation_in_progress = FALSE;
|
info->comp_window->animation_in_progress = FALSE;
|
||||||
if (info->comp_window->hide_after_animation)
|
if (info->comp_window->hide_after_animation)
|
||||||
hide_node (info->comp_window);
|
meta_comp_window_hide (info->comp_window);
|
||||||
|
|
||||||
cm_drawable_node_set_explosion_level (node, 0.0);
|
cm_drawable_node_set_explosion_level (node, 0.0);
|
||||||
|
|
||||||
|
@ -29,10 +29,12 @@ typedef struct _MetaCompWindow MetaCompWindow;
|
|||||||
MetaCompWindow *meta_comp_window_new (MetaDisplay *display,
|
MetaCompWindow *meta_comp_window_new (MetaDisplay *display,
|
||||||
WsDrawable *drawable);
|
WsDrawable *drawable);
|
||||||
CmNode *meta_comp_window_get_node (MetaCompWindow *window);
|
CmNode *meta_comp_window_get_node (MetaCompWindow *window);
|
||||||
void meta_comp_window_free (MetaCompWindow *window);
|
gboolean meta_comp_window_free (MetaCompWindow *window);
|
||||||
void meta_comp_window_set_size (MetaCompWindow *window,
|
void meta_comp_window_set_size (MetaCompWindow *window,
|
||||||
WsRectangle *size);
|
WsRectangle *size);
|
||||||
|
|
||||||
|
void meta_comp_window_hide (MetaCompWindow *comp_window);
|
||||||
|
void meta_comp_window_show (MetaCompWindow *comp_window);
|
||||||
void meta_comp_window_refresh_attrs (MetaCompWindow *comp_window);
|
void meta_comp_window_refresh_attrs (MetaCompWindow *comp_window);
|
||||||
void meta_comp_window_set_updates (MetaCompWindow *comp_window,
|
void meta_comp_window_set_updates (MetaCompWindow *comp_window,
|
||||||
gboolean updates);
|
gboolean updates);
|
||||||
|
@ -140,12 +140,9 @@ do_effect (MetaEffect *effect,
|
|||||||
get_xid (effect->u.minimize.window));
|
get_xid (effect->u.minimize.window));
|
||||||
MetaCompWindow *window =
|
MetaCompWindow *window =
|
||||||
meta_comp_screen_lookup_window (screen, effect->u.minimize.window->frame->xwindow);
|
meta_comp_screen_lookup_window (screen, effect->u.minimize.window->frame->xwindow);
|
||||||
g_print ("close\n");
|
|
||||||
|
|
||||||
|
meta_comp_window_set_updates (window, FALSE);
|
||||||
meta_comp_window_explode (window, effect);
|
meta_comp_window_explode (window, effect);
|
||||||
#if 0
|
|
||||||
meta_effect_end (effect);
|
|
||||||
#endif
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
|
Loading…
Reference in New Issue
Block a user