shell-animation: add conf option in shell
Now we can choose zoom or fade in weston.ini to fulfill and customize the user experence easier. Signed-off-by: Juan Zhao <juan.j.zhao@intel.com>
This commit is contained in:
committed by
Kristian Høgsberg
parent
2abd07b200
commit
e10d279017
@@ -594,6 +594,14 @@ struct weston_zoom *
|
||||
weston_zoom_run(struct weston_surface *surface, GLfloat start, GLfloat stop,
|
||||
weston_zoom_done_func_t done, void *data);
|
||||
|
||||
struct weston_fade;
|
||||
typedef void (*weston_fade_done_func_t)(struct weston_fade *fade, void *data);
|
||||
|
||||
struct weston_fade *
|
||||
weston_fade_run(struct weston_surface *surface,
|
||||
weston_fade_done_func_t done, void *data);
|
||||
|
||||
|
||||
void
|
||||
weston_surface_set_color(struct weston_surface *surface,
|
||||
GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
|
||||
|
||||
+37
-1
@@ -36,6 +36,13 @@
|
||||
#include "desktop-shell-server-protocol.h"
|
||||
#include "../shared/config-parser.h"
|
||||
|
||||
enum animation_type {
|
||||
ANIMATION_NONE,
|
||||
|
||||
ANIMATION_ZOOM,
|
||||
ANIMATION_FADE
|
||||
};
|
||||
|
||||
struct desktop_shell {
|
||||
struct weston_compositor *compositor;
|
||||
|
||||
@@ -76,6 +83,7 @@ struct desktop_shell {
|
||||
} screensaver;
|
||||
|
||||
uint32_t binding_modifier;
|
||||
enum animation_type win_animation_type;
|
||||
struct weston_surface *debug_repaint_surface;
|
||||
};
|
||||
|
||||
@@ -242,6 +250,20 @@ get_modifier(char *modifier)
|
||||
return MODIFIER_SUPER;
|
||||
}
|
||||
|
||||
static enum animation_type
|
||||
get_animation_type(char *animation)
|
||||
{
|
||||
if (!animation)
|
||||
return ANIMATION_NONE;
|
||||
|
||||
if (!strcmp("zoom", animation))
|
||||
return ANIMATION_ZOOM;
|
||||
else if (!strcmp("fade", animation))
|
||||
return ANIMATION_FADE;
|
||||
else
|
||||
return ANIMATION_NONE;
|
||||
}
|
||||
|
||||
static void
|
||||
shell_configuration(struct desktop_shell *shell)
|
||||
{
|
||||
@@ -249,9 +271,11 @@ shell_configuration(struct desktop_shell *shell)
|
||||
char *path = NULL;
|
||||
int duration = 60;
|
||||
char *modifier = NULL;
|
||||
char *win_animation = NULL;
|
||||
|
||||
struct config_key shell_keys[] = {
|
||||
{ "binding-modifier", CONFIG_KEY_STRING, &modifier },
|
||||
{ "animation", CONFIG_KEY_STRING, &win_animation},
|
||||
};
|
||||
|
||||
struct config_key saver_keys[] = {
|
||||
@@ -271,6 +295,7 @@ shell_configuration(struct desktop_shell *shell)
|
||||
shell->screensaver.path = path;
|
||||
shell->screensaver.duration = duration;
|
||||
shell->binding_modifier = get_modifier(modifier);
|
||||
shell->win_animation_type = get_animation_type(win_animation);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -2020,7 +2045,18 @@ map(struct desktop_shell *shell, struct weston_surface *surface,
|
||||
}
|
||||
|
||||
if (surface_type == SHELL_SURFACE_TOPLEVEL)
|
||||
weston_zoom_run(surface, 0.8, 1.0, NULL, NULL);
|
||||
{
|
||||
switch (shell->win_animation_type) {
|
||||
case ANIMATION_FADE:
|
||||
weston_fade_run(surface, NULL, NULL);
|
||||
break;
|
||||
case ANIMATION_ZOOM:
|
||||
weston_zoom_run(surface, 0.8, 1.0, NULL, NULL);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
|
||||
Reference in New Issue
Block a user