mirror of
https://github.com/brl/mutter.git
synced 2025-02-16 13:24:09 +00:00
Comment out wobbling
Tue Mar 14 11:57:46 2006 Søren Sandmann <sandmann@redhat.com> * src/compositor.c: Comment out wobbling * src/compositor.c (blow_up): remove this function * src/compositor.c (process_configure_notify): Uncomment set_size(). * src/c-screen.c (meta_screen_info_set_updates): When updates are true, set all the properties such as size and shape. * src/c-screen.c (meta_screen_info_add_window): Create a special WindowInfo structure for each window. * src/c-screen.c (meta_screen_info_set_size): Set size and output shape of the drawable node.
This commit is contained in:
parent
5f30265879
commit
16de3b603b
18
ChangeLog
18
ChangeLog
@ -1,3 +1,21 @@
|
|||||||
|
Tue Mar 14 11:57:46 2006 Søren Sandmann <sandmann@redhat.com>
|
||||||
|
|
||||||
|
* src/compositor.c: Comment out wobbling
|
||||||
|
|
||||||
|
* src/compositor.c (blow_up): remove this function
|
||||||
|
|
||||||
|
* src/compositor.c (process_configure_notify): Uncomment
|
||||||
|
set_size().
|
||||||
|
|
||||||
|
* src/c-screen.c (meta_screen_info_set_updates): When updates are
|
||||||
|
true, set all the properties such as size and shape.
|
||||||
|
|
||||||
|
* src/c-screen.c (meta_screen_info_add_window): Create a special
|
||||||
|
WindowInfo structure for each window.
|
||||||
|
|
||||||
|
* src/c-screen.c (meta_screen_info_set_size): Set size and output
|
||||||
|
shape of the drawable node.
|
||||||
|
|
||||||
2006-03-13 Elijah Newren <newren gmail com>
|
2006-03-13 Elijah Newren <newren gmail com>
|
||||||
|
|
||||||
* README:
|
* README:
|
||||||
|
112
src/c-screen.c
112
src/c-screen.c
@ -29,6 +29,15 @@
|
|||||||
#include "screen.h"
|
#include "screen.h"
|
||||||
#include "c-screen.h"
|
#include "c-screen.h"
|
||||||
|
|
||||||
|
typedef struct WindowInfo WindowInfo;
|
||||||
|
|
||||||
|
struct WindowInfo
|
||||||
|
{
|
||||||
|
Window xwindow;
|
||||||
|
CmNode *node;
|
||||||
|
gboolean updates;
|
||||||
|
};
|
||||||
|
|
||||||
struct MetaScreenInfo
|
struct MetaScreenInfo
|
||||||
{
|
{
|
||||||
WsDisplay *display;
|
WsDisplay *display;
|
||||||
@ -39,7 +48,7 @@ struct MetaScreenInfo
|
|||||||
WsScreen *screen;
|
WsScreen *screen;
|
||||||
MetaScreen *meta_screen;
|
MetaScreen *meta_screen;
|
||||||
|
|
||||||
GHashTable *nodes_by_xid;
|
GHashTable *window_infos_by_xid;
|
||||||
|
|
||||||
int repaint_id;
|
int repaint_id;
|
||||||
int idle_id;
|
int idle_id;
|
||||||
@ -125,15 +134,26 @@ repaint (gpointer data)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static WindowInfo *
|
||||||
|
find_win_info (MetaScreenInfo *info,
|
||||||
|
Window xwindow)
|
||||||
|
{
|
||||||
|
WindowInfo *win_info =
|
||||||
|
g_hash_table_lookup (info->window_infos_by_xid, (gpointer)xwindow);
|
||||||
|
|
||||||
|
return win_info;
|
||||||
|
}
|
||||||
|
|
||||||
static CmNode *
|
static CmNode *
|
||||||
find_node (MetaScreenInfo *info,
|
find_node (MetaScreenInfo *info,
|
||||||
Window xwindow)
|
Window xwindow)
|
||||||
{
|
{
|
||||||
CmNode *node;
|
WindowInfo *win_info = find_win_info (info, xwindow);
|
||||||
|
|
||||||
node = g_hash_table_lookup (info->nodes_by_xid, (gpointer)xwindow);
|
if (win_info)
|
||||||
|
return win_info->node;
|
||||||
|
|
||||||
return node;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static GList *all_screen_infos;
|
static GList *all_screen_infos;
|
||||||
@ -165,7 +185,9 @@ meta_screen_info_new (WsDisplay *display,
|
|||||||
display, screen->number);
|
display, screen->number);
|
||||||
scr_info->display = display;
|
scr_info->display = display;
|
||||||
scr_info->gl_window = ws_screen_get_gl_window (scr_info->screen);
|
scr_info->gl_window = ws_screen_get_gl_window (scr_info->screen);
|
||||||
scr_info->nodes_by_xid = g_hash_table_new (g_direct_hash, g_direct_equal);
|
scr_info->window_infos_by_xid =
|
||||||
|
g_hash_table_new_full (g_direct_hash, g_direct_equal,
|
||||||
|
NULL, g_free);
|
||||||
scr_info->meta_screen = screen;
|
scr_info->meta_screen = screen;
|
||||||
|
|
||||||
/* FIXME: This should probably happen in libcm */
|
/* FIXME: This should probably happen in libcm */
|
||||||
@ -331,11 +353,36 @@ meta_screen_info_set_size (MetaScreenInfo *info,
|
|||||||
gint width,
|
gint width,
|
||||||
gint height)
|
gint height)
|
||||||
{
|
{
|
||||||
CmNode *node = find_node (info, window);
|
CmDrawableNode *node = CM_DRAWABLE_NODE (find_node (info, window));
|
||||||
|
WindowInfo *winfo = find_win_info (info, window);
|
||||||
|
WsRectangle rect;
|
||||||
|
|
||||||
|
rect.x = x;
|
||||||
|
rect.y = y;
|
||||||
|
rect.width = width;
|
||||||
|
rect.height = height;
|
||||||
|
|
||||||
if (node)
|
if (node)
|
||||||
cm_drawable_node_set_geometry (CM_DRAWABLE_NODE (node),
|
{
|
||||||
x, y, width, height);
|
WsRegion *shape;
|
||||||
|
|
||||||
|
if (winfo && winfo->updates)
|
||||||
|
{
|
||||||
|
WsWindow *window = WS_WINDOW (node->drawable);
|
||||||
|
WsDisplay *display = WS_RESOURCE (window)->display;
|
||||||
|
|
||||||
|
ws_display_begin_error_trap (display);
|
||||||
|
|
||||||
|
cm_drawable_node_set_geometry (CM_DRAWABLE_NODE (node), &rect);
|
||||||
|
shape = ws_window_get_output_shape (window);
|
||||||
|
cm_drawable_node_set_shape (node, shape);
|
||||||
|
ws_region_destroy (shape);
|
||||||
|
|
||||||
|
cm_drawable_node_update_pixmap (node);
|
||||||
|
|
||||||
|
ws_display_end_error_trap (display);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -363,12 +410,24 @@ print_child_titles (WsWindow *window)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static WindowInfo *
|
||||||
|
window_info_new (Window xwindow,
|
||||||
|
CmNode *node)
|
||||||
|
{
|
||||||
|
WindowInfo *win_info = g_new0 (WindowInfo, 1);
|
||||||
|
win_info->xwindow = xwindow;
|
||||||
|
win_info->node = node;
|
||||||
|
win_info->updates = TRUE;
|
||||||
|
return win_info;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
meta_screen_info_add_window (MetaScreenInfo *info,
|
meta_screen_info_add_window (MetaScreenInfo *info,
|
||||||
Window xwindow)
|
Window xwindow)
|
||||||
{
|
{
|
||||||
CmNode *node;
|
CmNode *node;
|
||||||
WsDrawable *drawable;
|
WsDrawable *drawable;
|
||||||
|
WsRectangle geometry;
|
||||||
|
|
||||||
ws_display_begin_error_trap (info->display);
|
ws_display_begin_error_trap (info->display);
|
||||||
|
|
||||||
@ -381,7 +440,9 @@ meta_screen_info_add_window (MetaScreenInfo *info,
|
|||||||
if (ws_window_query_input_only (WS_WINDOW (drawable)))
|
if (ws_window_query_input_only (WS_WINDOW (drawable)))
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
node = CM_NODE (cm_drawable_node_new (drawable));
|
ws_drawable_query_geometry (drawable, &geometry);
|
||||||
|
|
||||||
|
node = CM_NODE (cm_drawable_node_new (drawable, &geometry));
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
print_child_titles (WS_WINDOW (drawable));
|
print_child_titles (WS_WINDOW (drawable));
|
||||||
@ -389,7 +450,10 @@ meta_screen_info_add_window (MetaScreenInfo *info,
|
|||||||
|
|
||||||
cm_stacker_add_child (info->stacker, node);
|
cm_stacker_add_child (info->stacker, node);
|
||||||
|
|
||||||
g_hash_table_insert (info->nodes_by_xid, (gpointer)xwindow, node);
|
g_hash_table_insert (info->window_infos_by_xid,
|
||||||
|
(gpointer)xwindow,
|
||||||
|
window_info_new (xwindow, node));
|
||||||
|
|
||||||
g_object_unref (node);
|
g_object_unref (node);
|
||||||
|
|
||||||
info->repaint_id =
|
info->repaint_id =
|
||||||
@ -439,7 +503,7 @@ meta_screen_info_remove_window (MetaScreenInfo *info,
|
|||||||
|
|
||||||
g_print ("removing %lx\n", xwindow);
|
g_print ("removing %lx\n", xwindow);
|
||||||
|
|
||||||
g_hash_table_remove (info->nodes_by_xid, (gpointer)xwindow);
|
g_hash_table_remove (info->window_infos_by_xid, (gpointer)xwindow);
|
||||||
|
|
||||||
cm_stacker_remove_child (info->stacker, node);
|
cm_stacker_remove_child (info->stacker, node);
|
||||||
}
|
}
|
||||||
@ -449,10 +513,29 @@ meta_screen_info_set_updates (MetaScreenInfo *info,
|
|||||||
Window xwindow,
|
Window xwindow,
|
||||||
gboolean updates)
|
gboolean updates)
|
||||||
{
|
{
|
||||||
CmDrawableNode *node = CM_DRAWABLE_NODE (find_node (info, xwindow));
|
WindowInfo *win_info = find_win_info (info, xwindow);
|
||||||
|
CmDrawableNode *node = CM_DRAWABLE_NODE (win_info->node);
|
||||||
|
|
||||||
|
win_info->updates = updates;
|
||||||
|
|
||||||
if (node)
|
if (node)
|
||||||
cm_drawable_node_set_updates (node, updates);
|
cm_drawable_node_set_updates (node, updates);
|
||||||
|
|
||||||
|
if (updates)
|
||||||
|
{
|
||||||
|
WsRectangle rect;
|
||||||
|
WsRegion *shape;
|
||||||
|
WsDisplay *display = WS_RESOURCE (node->drawable)->display;
|
||||||
|
|
||||||
|
ws_display_begin_error_trap (display);
|
||||||
|
ws_drawable_query_geometry (node->drawable, &rect);
|
||||||
|
cm_drawable_node_update_pixmap (node);
|
||||||
|
cm_drawable_node_set_geometry (node, &rect);
|
||||||
|
shape = ws_window_get_output_shape (WS_WINDOW (node->drawable));
|
||||||
|
cm_drawable_node_set_shape (node, shape);
|
||||||
|
ws_region_destroy (shape);
|
||||||
|
ws_display_end_error_trap (display);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -497,10 +580,7 @@ meta_screen_info_get_real_size (MetaScreenInfo *info,
|
|||||||
if (!size)
|
if (!size)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
size->x = node->real_x;
|
cm_drawable_node_get_clipbox (node, size);
|
||||||
size->y = node->real_y;
|
|
||||||
size->width = node->real_width;
|
|
||||||
size->height = node->real_height;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -224,12 +224,10 @@ process_configure_notify (MetaCompositor *compositor,
|
|||||||
}
|
}
|
||||||
|
|
||||||
meta_screen_info_restack (minfo, event->window, event->above);
|
meta_screen_info_restack (minfo, event->window, event->above);
|
||||||
#if 0
|
|
||||||
meta_screen_info_set_size (minfo,
|
meta_screen_info_set_size (minfo,
|
||||||
event->window,
|
event->window,
|
||||||
event->x, event->y,
|
event->x, event->y,
|
||||||
event->width, event->height);
|
event->width, event->height);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
#endif /* HAVE_COMPOSITE_EXTENSIONS */
|
#endif /* HAVE_COMPOSITE_EXTENSIONS */
|
||||||
|
|
||||||
@ -1134,7 +1132,6 @@ meta_compositor_set_updates (MetaCompositor *compositor,
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#ifdef HAVE_COMPOSITE_EXTENSIONS
|
#ifdef HAVE_COMPOSITE_EXTENSIONS
|
||||||
|
|
||||||
#define BALLOON_TIME 2
|
#define BALLOON_TIME 2
|
||||||
@ -1147,49 +1144,12 @@ typedef struct
|
|||||||
GTimer *timer;
|
GTimer *timer;
|
||||||
} BalloonInfo;
|
} BalloonInfo;
|
||||||
|
|
||||||
static gboolean
|
|
||||||
blow_up (gpointer data)
|
|
||||||
{
|
|
||||||
BalloonInfo *info = data;
|
|
||||||
gdouble elapsed = g_timer_elapsed (info->timer, NULL) / BALLOON_TIME;
|
|
||||||
CmPoint points[4][4];
|
|
||||||
int i, j;
|
|
||||||
|
|
||||||
if (elapsed > BALLOON_TIME)
|
|
||||||
{
|
|
||||||
cm_drawable_node_set_viewable (info->node, FALSE);
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (i = 0; i < 4; ++i)
|
|
||||||
{
|
|
||||||
for (j = 0; j < 4; ++j)
|
|
||||||
{
|
|
||||||
points[i][j].x = info->node->real_x + j;
|
|
||||||
points[i][j].y = info->node->real_y + i;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
cm_drawable_node_set_patch (info->node, points);
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void
|
void
|
||||||
meta_compositor_destroy (MetaCompositor *compositor)
|
meta_compositor_destroy (MetaCompositor *compositor)
|
||||||
{
|
{
|
||||||
#ifdef HAVE_COMPOSITE_EXTENSIONS
|
#ifdef HAVE_COMPOSITE_EXTENSIONS
|
||||||
#if 0
|
|
||||||
GSList *list;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
/* FIXME */
|
|
||||||
ws_display_free (compositor->display);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
g_free (compositor);
|
g_free (compositor);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@ -1204,6 +1164,7 @@ struct MoveInfo
|
|||||||
MetaScreen *screen;
|
MetaScreen *screen;
|
||||||
MetaWindow *window;
|
MetaWindow *window;
|
||||||
gdouble last_time;
|
gdouble last_time;
|
||||||
|
gboolean window_destroyed;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@ -1237,8 +1198,12 @@ wobble (gpointer data)
|
|||||||
MetaScreenInfo *minfo = info->screen->compositor_data;
|
MetaScreenInfo *minfo = info->screen->compositor_data;
|
||||||
double t = g_timer_elapsed (info->timer, NULL);
|
double t = g_timer_elapsed (info->timer, NULL);
|
||||||
|
|
||||||
if (info->finished && model_is_calm (info->model))
|
g_print ("info->window_destroyed: %d\n",
|
||||||
|
info->window_destroyed);
|
||||||
|
if ((info->finished && model_is_calm (info->model)) ||
|
||||||
|
info->window_destroyed)
|
||||||
{
|
{
|
||||||
|
if (!info->window_destroyed)
|
||||||
meta_screen_info_unset_patch (minfo, get_xid (info->window));
|
meta_screen_info_unset_patch (minfo, get_xid (info->window));
|
||||||
g_free (info);
|
g_free (info);
|
||||||
info = NULL;
|
info = NULL;
|
||||||
@ -1291,6 +1256,7 @@ meta_compositor_begin_move (MetaCompositor *compositor,
|
|||||||
MetaRectangle *initial,
|
MetaRectangle *initial,
|
||||||
int grab_x, int grab_y)
|
int grab_x, int grab_y)
|
||||||
{
|
{
|
||||||
|
#if 0
|
||||||
#ifdef HAVE_COMPOSITE_EXTENSIONS
|
#ifdef HAVE_COMPOSITE_EXTENSIONS
|
||||||
MetaRectangle rect;
|
MetaRectangle rect;
|
||||||
|
|
||||||
@ -1300,6 +1266,7 @@ meta_compositor_begin_move (MetaCompositor *compositor,
|
|||||||
|
|
||||||
compositor->move_info->last_time = 0.0;
|
compositor->move_info->last_time = 0.0;
|
||||||
compositor->move_info->timer = g_timer_new ();
|
compositor->move_info->timer = g_timer_new ();
|
||||||
|
compositor->move_info->window_destroyed = FALSE;
|
||||||
|
|
||||||
compute_window_rect (window, &rect);
|
compute_window_rect (window, &rect);
|
||||||
|
|
||||||
@ -1316,6 +1283,7 @@ meta_compositor_begin_move (MetaCompositor *compositor,
|
|||||||
|
|
||||||
g_idle_add (wobble, compositor->move_info);
|
g_idle_add (wobble, compositor->move_info);
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -1323,17 +1291,38 @@ meta_compositor_update_move (MetaCompositor *compositor,
|
|||||||
MetaWindow *window,
|
MetaWindow *window,
|
||||||
int x, int y)
|
int x, int y)
|
||||||
{
|
{
|
||||||
|
#if 0
|
||||||
#ifdef HAVE_COMPOSITE_EXTENSIONS
|
#ifdef HAVE_COMPOSITE_EXTENSIONS
|
||||||
model_update_move (compositor->move_info->model, x, y);
|
model_update_move (compositor->move_info->model, x, y);
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
meta_compositor_end_move (MetaCompositor *compositor,
|
meta_compositor_end_move (MetaCompositor *compositor,
|
||||||
MetaWindow *window)
|
MetaWindow *window)
|
||||||
{
|
{
|
||||||
|
#if 0
|
||||||
#ifdef HAVE_COMPOSITE_EXTENSIONS
|
#ifdef HAVE_COMPOSITE_EXTENSIONS
|
||||||
compositor->move_info->finished = TRUE;
|
compositor->move_info->finished = TRUE;
|
||||||
compositor->move_info = NULL;
|
#endif
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
meta_compositor_free_window (MetaCompositor *compositor,
|
||||||
|
MetaWindow *window)
|
||||||
|
{
|
||||||
|
#if 0
|
||||||
|
#ifdef HAVE_COMPOSITE_EXTENSIONS
|
||||||
|
g_print ("freeing\n");
|
||||||
|
if (compositor->move_info)
|
||||||
|
{
|
||||||
|
g_print ("setting moveinfo to destroyed\n");
|
||||||
|
compositor->move_info->window_destroyed = TRUE;
|
||||||
|
compositor->move_info = NULL;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -70,5 +70,9 @@ void meta_compositor_update_move (MetaCompositor *compositor,
|
|||||||
int x, int y);
|
int x, int y);
|
||||||
void meta_compositor_end_move (MetaCompositor *compositor,
|
void meta_compositor_end_move (MetaCompositor *compositor,
|
||||||
MetaWindow *window);
|
MetaWindow *window);
|
||||||
|
void meta_compositor_free_window (MetaCompositor *compositor,
|
||||||
|
MetaWindow *window);
|
||||||
|
void meta_compositor_free_window (MetaCompositor *compositor,
|
||||||
|
MetaWindow *window);
|
||||||
|
|
||||||
#endif /* META_COMPOSITOR_H */
|
#endif /* META_COMPOSITOR_H */
|
||||||
|
@ -898,6 +898,9 @@ meta_window_free (MetaWindow *window)
|
|||||||
|
|
||||||
meta_verbose ("Unmanaging 0x%lx\n", window->xwindow);
|
meta_verbose ("Unmanaging 0x%lx\n", window->xwindow);
|
||||||
|
|
||||||
|
if (window->display->compositor)
|
||||||
|
meta_compositor_free_window (window->display->compositor, window);
|
||||||
|
|
||||||
if (window->display->window_with_menu == window)
|
if (window->display->window_with_menu == window)
|
||||||
{
|
{
|
||||||
meta_ui_window_menu_free (window->display->window_menu);
|
meta_ui_window_menu_free (window->display->window_menu);
|
||||||
@ -1320,7 +1323,6 @@ finish_minimize (gpointer data)
|
|||||||
meta_window_hide (window);
|
meta_window_hide (window);
|
||||||
if (window->has_focus)
|
if (window->has_focus)
|
||||||
{
|
{
|
||||||
g_print ("focusing something other than %lx\n", window->frame->xwindow);
|
|
||||||
meta_workspace_focus_default_window
|
meta_workspace_focus_default_window
|
||||||
(window->screen->active_workspace,
|
(window->screen->active_workspace,
|
||||||
window,
|
window,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user