mirror of
https://github.com/brl/mutter.git
synced 2025-03-30 23:23:47 +00:00
Make minimize animation update again.
Fri Jan 20 16:42:25 2006 Søren Sandmann <sandmann@redhat.com> * src/compositor.c: Make minimize animation update again.
This commit is contained in:
parent
1bce2c55fe
commit
cc790655f2
@ -1,3 +1,7 @@
|
|||||||
|
Fri Jan 20 16:42:25 2006 Søren Sandmann <sandmann@redhat.com>
|
||||||
|
|
||||||
|
* src/compositor.c: Make minimize animation update again.
|
||||||
|
|
||||||
Thu Jan 19 18:05:47 2006 Søren Sandmann <sandmann@redhat.com>
|
Thu Jan 19 18:05:47 2006 Søren Sandmann <sandmann@redhat.com>
|
||||||
|
|
||||||
* src/compositor.c (meta_compositor_manage_screen):
|
* src/compositor.c (meta_compositor_manage_screen):
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2003, 2004 Red Hat, Inc.
|
* Copyright (C) 2003, 2004, 2005, 2006 Red Hat, Inc.
|
||||||
* Copyright (C) 2003 Keith Packard
|
* Copyright (C) 2003 Keith Packard
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
@ -209,7 +209,7 @@ handle_restacking (MetaCompositor *compositor,
|
|||||||
|
|
||||||
if (window_link == above_link)
|
if (window_link == above_link)
|
||||||
{
|
{
|
||||||
/* This can happen if the topmost window is raise above
|
/* This can happen if the topmost window is raised above
|
||||||
* the GL window
|
* the GL window
|
||||||
*/
|
*/
|
||||||
return;
|
return;
|
||||||
@ -243,7 +243,8 @@ process_configure_notify (MetaCompositor *compositor,
|
|||||||
screen = node_get_screen (compositor->meta_display->xdisplay, node);
|
screen = node_get_screen (compositor->meta_display->xdisplay, node);
|
||||||
scr_info = screen->compositor_data;
|
scr_info = screen->compositor_data;
|
||||||
|
|
||||||
above_window = ws_window_lookup (node->drawable->display, event->above);
|
above_window = ws_window_lookup (WS_RESOURCE (node->drawable)->display,
|
||||||
|
event->above);
|
||||||
|
|
||||||
if (above_window == scr_info->glw)
|
if (above_window == scr_info->glw)
|
||||||
{
|
{
|
||||||
@ -277,6 +278,10 @@ process_map (MetaCompositor *compositor,
|
|||||||
{
|
{
|
||||||
CmDrawableNode *node;
|
CmDrawableNode *node;
|
||||||
MetaScreen *screen;
|
MetaScreen *screen;
|
||||||
|
|
||||||
|
/* FIXME: do we sometimes get mapnotifies for windows that are
|
||||||
|
* not (direct) children of the root?
|
||||||
|
*/
|
||||||
|
|
||||||
/* See if window was mapped as child of root */
|
/* See if window was mapped as child of root */
|
||||||
screen = meta_display_screen_for_root (compositor->meta_display,
|
screen = meta_display_screen_for_root (compositor->meta_display,
|
||||||
@ -589,7 +594,6 @@ update (gpointer data)
|
|||||||
ws_display_grab (ws_drawable_get_display ((WsDrawable *)gl_window));
|
ws_display_grab (ws_drawable_get_display ((WsDrawable *)gl_window));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
ws_window_gl_swap_buffers (gl_window);
|
ws_window_gl_swap_buffers (gl_window);
|
||||||
glFinish();
|
glFinish();
|
||||||
|
|
||||||
@ -603,7 +607,7 @@ update (gpointer data)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
do_repaint (CmDrawableNode *node, gpointer data)
|
queue_repaint (CmDrawableNode *node, gpointer data)
|
||||||
{
|
{
|
||||||
MetaScreen *screen = data;
|
MetaScreen *screen = data;
|
||||||
ScreenInfo *scr_info = screen->compositor_data;
|
ScreenInfo *scr_info = screen->compositor_data;
|
||||||
@ -613,7 +617,11 @@ do_repaint (CmDrawableNode *node, gpointer data)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (!scr_info->idle_id)
|
if (!scr_info->idle_id)
|
||||||
|
{
|
||||||
|
g_print ("paint\n");
|
||||||
|
|
||||||
scr_info->idle_id = g_idle_add (update, screen);
|
scr_info->idle_id = g_idle_add (update, screen);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif /* HAVE_COMPOSITE_EXTENSIONS */
|
#endif /* HAVE_COMPOSITE_EXTENSIONS */
|
||||||
|
|
||||||
@ -662,7 +670,7 @@ meta_compositor_add_window (MetaCompositor *compositor,
|
|||||||
{
|
{
|
||||||
node = cm_drawable_node_new (drawable);
|
node = cm_drawable_node_new (drawable);
|
||||||
|
|
||||||
cm_drawable_node_set_damage_func (node, do_repaint, screen);
|
cm_drawable_node_set_damage_func (node, queue_repaint, screen);
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
drawable_node_set_deformation_func (node, wavy, NULL);
|
drawable_node_set_deformation_func (node, wavy, NULL);
|
||||||
@ -671,7 +679,7 @@ meta_compositor_add_window (MetaCompositor *compositor,
|
|||||||
|
|
||||||
/* FIXME: we should probably just store xid's directly */
|
/* FIXME: we should probably just store xid's directly */
|
||||||
g_hash_table_insert (compositor->window_hash,
|
g_hash_table_insert (compositor->window_hash,
|
||||||
&(node->drawable->xid), node);
|
&(WS_RESOURCE (node->drawable)->xid), node);
|
||||||
|
|
||||||
/* assume cwindow is at the top of the stack as it was either just
|
/* assume cwindow is at the top of the stack as it was either just
|
||||||
* created or just reparented to the root window
|
* created or just reparented to the root window
|
||||||
@ -769,7 +777,8 @@ meta_compositor_unmanage_screen (MetaCompositor *compositor,
|
|||||||
{
|
{
|
||||||
CmDrawableNode *node = scr_info->compositor_nodes->data;
|
CmDrawableNode *node = scr_info->compositor_nodes->data;
|
||||||
|
|
||||||
meta_compositor_remove_window (compositor, node->drawable->xid);
|
meta_compositor_remove_window (compositor,
|
||||||
|
WS_RESOURCE (node->drawable)->xid);
|
||||||
}
|
}
|
||||||
/* FIXME: free scr_info */
|
/* FIXME: free scr_info */
|
||||||
|
|
||||||
@ -813,6 +822,7 @@ typedef struct
|
|||||||
|
|
||||||
double start_time;
|
double start_time;
|
||||||
int idle_id;
|
int idle_id;
|
||||||
|
int repaint_id;
|
||||||
|
|
||||||
MetaMinimizeFinishedFunc finished_func;
|
MetaMinimizeFinishedFunc finished_func;
|
||||||
gpointer finished_data;
|
gpointer finished_data;
|
||||||
@ -829,11 +839,13 @@ stop_minimize (gpointer data)
|
|||||||
{
|
{
|
||||||
MiniInfo *info = data;
|
MiniInfo *info = data;
|
||||||
|
|
||||||
cm_drawable_node_set_deformation_func (info->node, NULL, NULL);
|
g_source_remove (info->repaint_id);
|
||||||
|
|
||||||
|
cm_drawable_node_set_deformation_func (info->node, NULL, NULL);
|
||||||
|
|
||||||
if (info->finished_func)
|
if (info->finished_func)
|
||||||
info->finished_func (info->finished_data);
|
info->finished_func (info->finished_data);
|
||||||
|
|
||||||
g_free (info);
|
g_free (info);
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
@ -860,7 +872,7 @@ minimize_deformation (gdouble time,
|
|||||||
|
|
||||||
*out_x = interpolate (pos, in_x, info->target.x + info->target.width * ((in_x - info->start.x) / info->start.width), 10 * in_y);
|
*out_x = interpolate (pos, in_x, info->target.x + info->target.width * ((in_x - info->start.x) / info->start.width), 10 * in_y);
|
||||||
*out_y = interpolate (pos, in_y, info->target.y + info->target.height * ((in_y - info->start.y) / info->start.height), 1.0);
|
*out_y = interpolate (pos, in_y, info->target.y + info->target.height * ((in_y - info->start.y) / info->start.height), 1.0);
|
||||||
|
|
||||||
if (elapsed > MINIMIZE_TIME)
|
if (elapsed > MINIMIZE_TIME)
|
||||||
{
|
{
|
||||||
g_assert (info->node);
|
g_assert (info->node);
|
||||||
@ -869,6 +881,16 @@ minimize_deformation (gdouble time,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
do_minimize_animation (gpointer data)
|
||||||
|
{
|
||||||
|
MiniInfo *info = data;
|
||||||
|
|
||||||
|
queue_repaint (info->node,
|
||||||
|
node_get_screen (info->window->display->xdisplay,
|
||||||
|
info->node));
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
convert (MetaScreen *screen,
|
convert (MetaScreen *screen,
|
||||||
int x, int y, int width, int height,
|
int x, int y, int width, int height,
|
||||||
@ -918,5 +940,8 @@ meta_compositor_minimize (MetaCompositor *compositor,
|
|||||||
info->finished_data = data;
|
info->finished_data = data;
|
||||||
|
|
||||||
cm_drawable_node_set_deformation_func (node, minimize_deformation, info);
|
cm_drawable_node_set_deformation_func (node, minimize_deformation, info);
|
||||||
|
|
||||||
|
info->repaint_id = g_idle_add (do_minimize_animation, info);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user