tests/shell: Allow configuring the background color
This will be used to create background colors that will match fullscreen window colors, so they can share the same ref test reference image. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3859>
This commit is contained in:
parent
ea9e8bff2d
commit
1f3dd65594
@ -45,6 +45,7 @@ void meta_compositor_window_actor_stage_views_changed (MetaCompositor *composito
|
||||
|
||||
void meta_switch_workspace_completed (MetaCompositor *compositor);
|
||||
|
||||
META_EXPORT_TEST
|
||||
MetaPluginManager * meta_compositor_get_plugin_manager (MetaCompositor *compositor);
|
||||
|
||||
int64_t meta_compositor_monotonic_to_high_res_xserver_time (MetaCompositor *compositor,
|
||||
|
@ -457,3 +457,9 @@ meta_plugin_manager_locate_pointer (MetaPluginManager *plugin_mgr)
|
||||
if (klass->locate_pointer)
|
||||
klass->locate_pointer (plugin);
|
||||
}
|
||||
|
||||
MetaPlugin *
|
||||
meta_plugin_manager_get_plugin (MetaPluginManager *plugin_mgr)
|
||||
{
|
||||
return plugin_mgr->plugin;
|
||||
}
|
||||
|
@ -100,3 +100,6 @@ MetaInhibitShortcutsDialog *
|
||||
MetaWindow *window);
|
||||
|
||||
void meta_plugin_manager_locate_pointer (MetaPluginManager *mgr);
|
||||
|
||||
META_EXPORT_TEST
|
||||
MetaPlugin * meta_plugin_manager_get_plugin (MetaPluginManager *plugin_mgr);
|
||||
|
@ -26,6 +26,9 @@
|
||||
#include <gio/gsettingsbackend.h>
|
||||
#include <fcntl.h>
|
||||
|
||||
#include "compositor/compositor-private.h"
|
||||
#include "compositor/meta-plugin-manager.h"
|
||||
#include "core/display-private.h"
|
||||
#include "core/meta-context-private.h"
|
||||
#include "meta/meta-x11-display.h"
|
||||
#include "tests/meta-backend-test.h"
|
||||
@ -53,6 +56,7 @@ typedef struct _MetaContextTestPrivate
|
||||
MetaContextTestType type;
|
||||
MetaContextTestFlag flags;
|
||||
MetaSessionManager *session_manager;
|
||||
CoglColor *background_color;
|
||||
} MetaContextTestPrivate;
|
||||
|
||||
struct _MetaContextTestClass
|
||||
@ -85,6 +89,7 @@ meta_context_test_finalize (GObject *object)
|
||||
MetaContextTestPrivate *priv =
|
||||
meta_context_test_get_instance_private (context_test);
|
||||
|
||||
g_clear_pointer (&priv->background_color, cogl_color_free);
|
||||
g_clear_object (&priv->session_manager);
|
||||
|
||||
G_OBJECT_CLASS (meta_context_test_parent_class)->finalize (object);
|
||||
@ -307,6 +312,8 @@ meta_context_test_run_tests (MetaContextTest *context_test,
|
||||
MetaTestRunFlags flags)
|
||||
{
|
||||
MetaContext *context = META_CONTEXT (context_test);
|
||||
MetaContextTestPrivate *priv =
|
||||
meta_context_test_get_instance_private (context_test);
|
||||
g_autoptr (GError) error = NULL;
|
||||
|
||||
if (!meta_context_setup (context, &error))
|
||||
@ -335,6 +342,18 @@ meta_context_test_run_tests (MetaContextTest *context_test,
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
if (priv->background_color)
|
||||
{
|
||||
MetaDisplay *display = meta_context_get_display (context);
|
||||
MetaCompositor *compositor = display->compositor;
|
||||
MetaPluginManager *plugin_manager =
|
||||
meta_compositor_get_plugin_manager (compositor);
|
||||
MetaPlugin *plugin = meta_plugin_manager_get_plugin (plugin_manager);
|
||||
|
||||
meta_test_shell_set_background_color (META_TEST_SHELL (plugin),
|
||||
*priv->background_color);
|
||||
}
|
||||
|
||||
g_idle_add (run_tests_idle, context_test);
|
||||
|
||||
meta_context_notify_ready (context);
|
||||
@ -459,3 +478,14 @@ meta_context_test_init (MetaContextTest *context_test)
|
||||
if (ret == NULL)
|
||||
g_warning ("Failed to clear mocked color devices: %s", error->message);
|
||||
}
|
||||
|
||||
void
|
||||
meta_context_test_set_background_color (MetaContextTest *context_test,
|
||||
CoglColor color)
|
||||
{
|
||||
MetaContextTestPrivate *priv =
|
||||
meta_context_test_get_instance_private (context_test);
|
||||
|
||||
g_clear_pointer (&priv->background_color, cogl_color_free);
|
||||
priv->background_color = cogl_color_copy (&color);
|
||||
}
|
||||
|
@ -73,6 +73,8 @@ struct _MetaTestShell
|
||||
|
||||
ClutterActor *background_group;
|
||||
|
||||
CoglColor *background_color;
|
||||
|
||||
struct {
|
||||
ClutterGrab *grab;
|
||||
ClutterActor *prev_focus;
|
||||
@ -257,11 +259,9 @@ on_switch_workspace_effect_stopped (ClutterTimeline *timeline,
|
||||
}
|
||||
|
||||
static void
|
||||
on_monitors_changed (MetaMonitorManager *monitor_manager,
|
||||
MetaPlugin *plugin)
|
||||
reload_backgrounds (MetaTestShell *test_shell)
|
||||
{
|
||||
MetaTestShell *test_shell = META_TEST_SHELL (plugin);
|
||||
MetaDisplay *display = meta_plugin_get_display (plugin);
|
||||
MetaDisplay *display = meta_plugin_get_display (META_PLUGIN (test_shell));
|
||||
GRand *rand;
|
||||
int i, n;
|
||||
|
||||
@ -275,10 +275,6 @@ on_monitors_changed (MetaMonitorManager *monitor_manager,
|
||||
ClutterContent *content;
|
||||
MtkRectangle rect;
|
||||
ClutterActor *background_actor;
|
||||
MetaBackground *background;
|
||||
uint8_t red;
|
||||
uint8_t green;
|
||||
uint8_t blue;
|
||||
|
||||
meta_display_get_monitor_geometry (display, i, &rect);
|
||||
|
||||
@ -289,6 +285,21 @@ on_monitors_changed (MetaMonitorManager *monitor_manager,
|
||||
clutter_actor_set_position (background_actor, rect.x, rect.y);
|
||||
clutter_actor_set_size (background_actor, rect.width, rect.height);
|
||||
|
||||
if (test_shell->background_color)
|
||||
{
|
||||
g_autoptr (MetaBackground) background = NULL;
|
||||
|
||||
background = meta_background_new (display);
|
||||
meta_background_set_color (background, test_shell->background_color);
|
||||
meta_background_content_set_background (background_content, background);
|
||||
}
|
||||
else
|
||||
{
|
||||
g_autoptr (MetaBackground) background = NULL;
|
||||
uint8_t red;
|
||||
uint8_t green;
|
||||
uint8_t blue;
|
||||
|
||||
blue = g_rand_int_range (rand, 0, 255);
|
||||
green = g_rand_int_range (rand, 0, 255);
|
||||
red = g_rand_int_range (rand, 0, 255);
|
||||
@ -297,9 +308,10 @@ on_monitors_changed (MetaMonitorManager *monitor_manager,
|
||||
meta_background_set_color (background,
|
||||
&COGL_COLOR_INIT (red, green, blue, 255));
|
||||
meta_background_content_set_background (background_content, background);
|
||||
g_object_unref (background);
|
||||
|
||||
meta_background_content_set_vignette (background_content, TRUE, 0.5, 0.5);
|
||||
meta_background_content_set_vignette (background_content,
|
||||
TRUE, 0.5, 0.5);
|
||||
}
|
||||
|
||||
clutter_actor_add_child (test_shell->background_group, background_actor);
|
||||
}
|
||||
@ -307,6 +319,15 @@ on_monitors_changed (MetaMonitorManager *monitor_manager,
|
||||
g_rand_free (rand);
|
||||
}
|
||||
|
||||
static void
|
||||
on_monitors_changed (MetaMonitorManager *monitor_manager,
|
||||
MetaPlugin *plugin)
|
||||
{
|
||||
MetaTestShell *test_shell = META_TEST_SHELL (plugin);
|
||||
|
||||
reload_backgrounds (test_shell);
|
||||
}
|
||||
|
||||
static void
|
||||
on_overlay_key (MetaDisplay *display,
|
||||
MetaTestShell *test_shell)
|
||||
@ -825,6 +846,16 @@ meta_test_shell_set_property (GObject *object,
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
meta_test_shell_finalize (GObject *object)
|
||||
{
|
||||
MetaTestShell *test_shell = META_TEST_SHELL (object);
|
||||
|
||||
g_clear_pointer (&test_shell->background_color, cogl_color_free);
|
||||
|
||||
G_OBJECT_CLASS (meta_test_shell_parent_class)->finalize (object);
|
||||
}
|
||||
|
||||
static void
|
||||
meta_test_shell_class_init (MetaTestShellClass *klass)
|
||||
{
|
||||
@ -832,6 +863,7 @@ meta_test_shell_class_init (MetaTestShellClass *klass)
|
||||
MetaPluginClass *plugin_class = META_PLUGIN_CLASS (klass);
|
||||
|
||||
object_class->set_property = meta_test_shell_set_property;
|
||||
object_class->finalize = meta_test_shell_finalize;
|
||||
|
||||
plugin_class->start = meta_test_shell_start;
|
||||
plugin_class->map = meta_test_shell_map;
|
||||
@ -858,3 +890,16 @@ meta_test_shell_init (MetaTestShell *test_shell)
|
||||
{
|
||||
test_shell->show_stage = TRUE;
|
||||
}
|
||||
|
||||
void
|
||||
meta_test_shell_set_background_color (MetaTestShell *test_shell,
|
||||
CoglColor color)
|
||||
{
|
||||
if (test_shell->background_color &&
|
||||
cogl_color_equal (test_shell->background_color, &color))
|
||||
return;
|
||||
|
||||
g_clear_pointer (&test_shell->background_color, cogl_color_free);
|
||||
test_shell->background_color = cogl_color_copy (&color);
|
||||
reload_backgrounds (test_shell);
|
||||
}
|
||||
|
@ -24,3 +24,7 @@ META_EXPORT
|
||||
G_DECLARE_FINAL_TYPE (MetaTestShell, meta_test_shell,
|
||||
META, TEST_SHELL,
|
||||
MetaPlugin)
|
||||
|
||||
META_EXPORT
|
||||
void meta_test_shell_set_background_color (MetaTestShell *test_shell,
|
||||
CoglColor color);
|
||||
|
@ -57,3 +57,7 @@ int meta_context_test_run_tests (MetaContextTest *context_test,
|
||||
|
||||
META_EXPORT
|
||||
void meta_context_test_wait_for_x11_display (MetaContextTest *context_test);
|
||||
|
||||
META_EXPORT
|
||||
void meta_context_test_set_background_color (MetaContextTest *context_test,
|
||||
CoglColor color);
|
||||
|
Loading…
x
Reference in New Issue
Block a user