Skip to content

Commit

Permalink
Revert "Merge pull request mate-desktop#115 from Samsagax/animation-f…
Browse files Browse the repository at this point in the history
…ix-clean"

This reverts commit 567890a, reversing
changes made to a65a66d.
  • Loading branch information
monsta committed Nov 7, 2015
1 parent 2283906 commit 3ed3bab
Show file tree
Hide file tree
Showing 4 changed files with 83 additions and 148 deletions.
43 changes: 8 additions & 35 deletions src/core/effects.c
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,6 @@
#endif

#define META_MINIMIZE_ANIMATION_LENGTH 0.25
#define META_UNMINIMIZE_ANIMATION_LENGTH 0.25
#define META_SHADE_ANIMATION_LENGTH 0.2

#include <string.h>
Expand Down Expand Up @@ -99,9 +98,6 @@ typedef struct
MetaRectangle start_rect;
MetaRectangle end_rect;

MetaEffectFinished finished;
gpointer finished_data;

} BoxAnimationContext;

/**
Expand Down Expand Up @@ -153,9 +149,7 @@ static void
draw_box_animation (MetaScreen *screen,
MetaRectangle *initial_rect,
MetaRectangle *destination_rect,
double seconds_duration,
MetaEffectFinished finished,
gpointer finished_data);
double seconds_duration);

/**
* Creates an effect.
Expand All @@ -179,13 +173,17 @@ create_effect (MetaEffectType type,
}

/**
* Destroys an effect.
* Destroys an effect. If the effect has a "finished" hook, it will be
* called before cleanup.
*
* \param effect The effect.
*/
static void
effect_free (MetaEffect *effect)
{
if (effect->priv->finished)
effect->priv->finished (effect->priv->finished_data);

g_free (effect->priv);
g_free (effect);
}
Expand Down Expand Up @@ -366,8 +364,6 @@ effects_draw_box_animation_timeout (BoxAnimationContext *context)
context->gc);
#endif /* !HAVE_SHAPE */

context->finished(context->finished_data);

g_free (context);
return FALSE;
}
Expand Down Expand Up @@ -415,9 +411,7 @@ void
draw_box_animation (MetaScreen *screen,
MetaRectangle *initial_rect,
MetaRectangle *destination_rect,
double seconds_duration,
MetaEffectFinished finished,
gpointer finished_data)
double seconds_duration)
{
BoxAnimationContext *context;

Expand All @@ -442,9 +436,6 @@ draw_box_animation (MetaScreen *screen,
context->start_rect = *initial_rect;
context->end_rect = *destination_rect;

context->finished = finished;
context->finished_data = finished_data;

#ifdef HAVE_SHAPE

attrs.override_redirect = True;
Expand Down Expand Up @@ -707,17 +698,7 @@ run_default_effect_handler (MetaEffect *effect)
draw_box_animation (effect->window->screen,
&(effect->u.minimize.window_rect),
&(effect->u.minimize.icon_rect),
META_MINIMIZE_ANIMATION_LENGTH,
effect->priv->finished,
effect->priv->finished_data);
break;
case META_EFFECT_UNMINIMIZE:
draw_box_animation (effect->window->screen,
&(effect->u.minimize.icon_rect),
&(effect->u.minimize.window_rect),
META_UNMINIMIZE_ANIMATION_LENGTH,
effect->priv->finished,
effect->priv->finished_data);
META_MINIMIZE_ANIMATION_LENGTH);
break;

default:
Expand All @@ -728,16 +709,8 @@ run_default_effect_handler (MetaEffect *effect)
static void
run_handler (MetaEffect *effect)
{
/* If effects are disabled just run the finished function */
if (meta_prefs_get_mate_animations ())
{
run_default_effect_handler (effect);
}
else
{
if (effect->priv->finished)
effect->priv->finished(effect->priv->finished_data);
}

effect_free (effect);
}
1 change: 0 additions & 1 deletion src/core/effects.h
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,6 @@

typedef enum
{
META_EFFECT_NONE = 0,
META_EFFECT_MINIMIZE,
META_EFFECT_UNMINIMIZE,
META_EFFECT_FOCUS,
Expand Down
4 changes: 0 additions & 4 deletions src/core/window-private.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@

#include <config.h>
#include "window.h"
#include "effects.h"
#include "screen-private.h"
#include "util.h"
#include "stack.h"
Expand Down Expand Up @@ -187,9 +186,6 @@ struct _MetaWindow
guint was_minimized : 1;
guint tab_unminimized : 1;

/* Whether there is a pending effect */
MetaEffectType effect_pending;

/* Whether the window is mapped; actual server-side state
* see also unmaps_pending
*/
Expand Down
183 changes: 75 additions & 108 deletions src/core/window.c
Original file line number Diff line number Diff line change
Expand Up @@ -483,7 +483,6 @@ meta_window_new_with_attrs (MetaDisplay *display,
window->minimized = FALSE;
window->was_minimized = FALSE;
window->tab_unminimized = FALSE;
window->effect_pending = META_EFFECT_NONE;
window->iconic = FALSE;
window->mapped = attrs->map_state != IsUnmapped;
/* if already mapped, no need to worry about focus-on-first-time-showing */
Expand Down Expand Up @@ -1460,119 +1459,80 @@ static void
finish_minimize (gpointer data)
{
MetaWindow *window = data;
/* FIXME: It really sucks to put timestamp pinging here; it'd
* probably make more sense in implement_showing() so that it's at
* least not duplicated in meta_window_show; but since
* finish_minimize is a callback making things just slightly icky, I
* haven't done that yet.
*/
guint32 timestamp = meta_display_get_current_time_roundtrip (window->display);

window->effect_pending = META_EFFECT_NONE;
}

static void
finish_unminimize (gpointer data)
{
MetaWindow *window = data;

meta_window_show (window);
window->was_minimized = FALSE;
window->effect_pending = META_EFFECT_NONE;
}

static void
meta_window_animate_minimize (MetaWindow *window)
{
MetaRectangle icon_rect, window_rect;
gboolean result;

/* Check if the window has an icon geometry */
result = meta_window_get_icon_geometry (window, &icon_rect);

if (!result)
meta_window_hide (window);
if (window->has_focus)
{
/* just animate into the corner somehow - maybe
* not a good idea...
*/
icon_rect.x = window->screen->rect.width;
icon_rect.y = window->screen->rect.height;
icon_rect.width = 1;
icon_rect.height = 1;
meta_workspace_focus_default_window (window->screen->active_workspace,
window,
timestamp);
}

meta_window_get_outer_rect (window, &window_rect);

meta_effect_run_minimize (window,
&window_rect,
&icon_rect,
finish_minimize,
window);
}

static void
meta_window_animate_unminimize (MetaWindow *window)
implement_showing (MetaWindow *window,
gboolean showing)
{
MetaRectangle icon_rect, window_rect;
gboolean result;

/* Check if the window has an icon geometry */
result = meta_window_get_icon_geometry (window, &icon_rect);
/* Actually show/hide the window */
meta_verbose ("Implement showing = %d for window %s\n",
showing, window->desc);

if (!result)
if (!showing)
{
/* just animate into the corner somehow - maybe
* not a good idea...
gboolean on_workspace;

on_workspace = meta_window_located_on_workspace (window,
window->screen->active_workspace);

/* Really this effects code should probably
* be in meta_window_hide so the window->mapped
* test isn't duplicated here. Anyhow, we animate
* if we are mapped now, we are supposed to
* be minimized, and we are on the current workspace.
*/
icon_rect.x = window->screen->rect.width;
icon_rect.y = window->screen->rect.height;
icon_rect.width = 1;
icon_rect.height = 1;
}
if (on_workspace && window->minimized && window->mapped &&
!meta_prefs_get_reduced_resources ())
{
MetaRectangle icon_rect, window_rect;
gboolean result;

meta_window_get_outer_rect (window, &window_rect);
/* Check if the window has an icon geometry */
result = meta_window_get_icon_geometry (window, &icon_rect);

meta_effect_run_unminimize (window,
&window_rect,
&icon_rect,
finish_unminimize,
window);
}
if (!result)
{
/* just animate into the corner somehow - maybe
* not a good idea...
*/
icon_rect.x = window->screen->rect.width;
icon_rect.y = window->screen->rect.height;
icon_rect.width = 1;
icon_rect.height = 1;
}

static void
implement_showing (MetaWindow *window,
gboolean showing)
{
/* Actually show/hide the window */
meta_verbose ("Implement showing = %d for window %s with effect pending %i\n",
showing, window->desc, window->effect_pending);
meta_window_get_outer_rect (window, &window_rect);

if (!showing)
{
/* Handle pending effects */
switch(window->effect_pending)
{
case META_EFFECT_MINIMIZE:
/* First hide the window and then animate */
meta_window_hide(window);
meta_window_animate_minimize (window);
break;
case META_EFFECT_UNMINIMIZE:
case META_EFFECT_NONE:
default:
meta_window_hide(window);
break;
}
meta_effect_run_minimize (window,
&window_rect,
&icon_rect,
finish_minimize,
window);
}
else
{
finish_minimize (window);
}
}
else
{
/* Handle pending effects */
switch(window->effect_pending)
{
case META_EFFECT_MINIMIZE:
break;
case META_EFFECT_UNMINIMIZE:
/* First animate then show the window */
meta_window_animate_unminimize (window);
break;
case META_EFFECT_NONE:
default:
meta_window_show (window);
break;
}
meta_window_show (window);
}
}

Expand Down Expand Up @@ -2335,6 +2295,24 @@ meta_window_show (MetaWindow *window)
XMapWindow (window->display->xdisplay, window->xwindow);
meta_error_trap_pop (window->display, FALSE);
did_show = TRUE;

if (window->was_minimized)
{
MetaRectangle window_rect;
MetaRectangle icon_rect;

window->was_minimized = FALSE;

if (meta_window_get_icon_geometry (window, &icon_rect))
{
meta_window_get_outer_rect (window, &window_rect);

meta_effect_run_unminimize (window,
&window_rect,
&icon_rect,
NULL, NULL);
}
}
}

if (window->iconic)
Expand Down Expand Up @@ -2373,10 +2351,6 @@ meta_window_show (MetaWindow *window)
meta_display_increment_focus_sentinel (window->display);
}
}
else if (window->was_minimized)
{
meta_window_focus(window, timestamp);
}

set_net_wm_state (window);

Expand Down Expand Up @@ -2463,8 +2437,6 @@ meta_window_minimize (MetaWindow *window)
if (!window->minimized)
{
window->minimized = TRUE;
/* Flag minimize effect pending */
window->effect_pending = META_EFFECT_MINIMIZE;
meta_window_queue(window, META_QUEUE_CALC_SHOWING);

meta_window_foreach_transient (window,
Expand All @@ -2484,8 +2456,6 @@ meta_window_minimize (MetaWindow *window)
window->desc);
}
}

/* Should insert minimize effect here? */
}

void
Expand All @@ -2495,15 +2465,12 @@ meta_window_unminimize (MetaWindow *window)
{
window->minimized = FALSE;
window->was_minimized = TRUE;
window->effect_pending = META_EFFECT_UNMINIMIZE;
meta_window_queue(window, META_QUEUE_CALC_SHOWING);

meta_window_foreach_transient (window,
queue_calc_showing_func,
NULL);
}

/* Should insert unminimize effect here? */
}

static void
Expand Down

0 comments on commit 3ed3bab

Please sign in to comment.