mutter/tests/interactive/test-stage-sizing.c
nobled eb906d85ca tests: abort if clutter_init fails
This fixes segfaults when something goes wrong during
init, but the test keeps going anyway.

Except for test-easing and test-picking, these were fixed by
sed magic:

sed -i -s -e "s/clutter_init \?(&argc, &argv)/\
if (clutter_init (\&argc, \&argv) != CLUTTER_INIT_SUCCESS)\n\
    return 1/" tests/*/*.c

http://bugzilla.clutter-project.org/show_bug.cgi?id=2574
2011-02-28 14:10:04 +00:00

110 lines
3.9 KiB
C

#include <stdlib.h>
#include <gmodule.h>
#include <clutter/clutter.h>
static gboolean
fullscreen_clicked_cb (ClutterStage *stage)
{
clutter_stage_set_fullscreen (stage, !clutter_stage_get_fullscreen (stage));
return TRUE;
}
static gboolean
resize_clicked_cb (ClutterStage *stage)
{
clutter_stage_set_user_resizable (stage,
!clutter_stage_get_user_resizable (stage));
return TRUE;
}
static gboolean
shrink_clicked_cb (ClutterActor *stage)
{
gfloat width, height;
clutter_actor_get_size (stage, &width, &height);
clutter_actor_set_size (stage, MAX (0, width - 10.f), MAX (0, height - 10.f));
return TRUE;
}
static gboolean
expand_clicked_cb (ClutterActor *stage)
{
gfloat width, height;
clutter_actor_get_size (stage, &width, &height);
clutter_actor_set_size (stage, width + 10.f, height + 10.f);
return TRUE;
}
G_MODULE_EXPORT int
test_stage_sizing_main (int argc, char *argv[])
{
gfloat width;
ClutterActor *stage, *rect, *label;
if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
return 1;
stage = clutter_stage_get_default ();
label = clutter_text_new_with_text ("Sans 16", "Toggle fullscreen");
rect = clutter_rectangle_new_with_color (CLUTTER_COLOR_LightScarletRed);
clutter_actor_set_size (rect,
clutter_actor_get_width (label) + 20,
clutter_actor_get_height (label) + 20);
clutter_container_add (CLUTTER_CONTAINER (stage), rect, label, NULL);
clutter_actor_set_position (label, 10, 10);
clutter_actor_set_reactive (rect, TRUE);
g_signal_connect_swapped (rect, "button-press-event",
G_CALLBACK (fullscreen_clicked_cb), stage);
width = clutter_actor_get_width (rect);
label = clutter_text_new_with_text ("Sans 16", "Toggle resizable");
rect = clutter_rectangle_new_with_color (CLUTTER_COLOR_Chameleon);
clutter_actor_set_size (rect,
clutter_actor_get_width (label) + 20,
clutter_actor_get_height (label) + 20);
clutter_container_add (CLUTTER_CONTAINER (stage), rect, label, NULL);
clutter_actor_set_x (rect, width);
clutter_actor_set_position (label, 10 + width, 10);
clutter_actor_set_reactive (rect, TRUE);
g_signal_connect_swapped (rect, "button-press-event",
G_CALLBACK (resize_clicked_cb), stage);
width += clutter_actor_get_width (rect);
label = clutter_text_new_with_text ("Sans 16", "Shrink");
rect = clutter_rectangle_new_with_color (CLUTTER_COLOR_SkyBlue);
clutter_actor_set_size (rect,
clutter_actor_get_width (label) + 20,
clutter_actor_get_height (label) + 20);
clutter_container_add (CLUTTER_CONTAINER (stage), rect, label, NULL);
clutter_actor_set_x (rect, width);
clutter_actor_set_position (label, 10 + width, 10);
clutter_actor_set_reactive (rect, TRUE);
g_signal_connect_swapped (rect, "button-press-event",
G_CALLBACK (shrink_clicked_cb), stage);
width += clutter_actor_get_width (rect);
label = clutter_text_new_with_text ("Sans 16", "Expand");
rect = clutter_rectangle_new_with_color (CLUTTER_COLOR_Butter);
clutter_actor_set_size (rect,
clutter_actor_get_width (label) + 20,
clutter_actor_get_height (label) + 20);
clutter_container_add (CLUTTER_CONTAINER (stage), rect, label, NULL);
clutter_actor_set_x (rect, width);
clutter_actor_set_position (label, 10 + width, 10);
clutter_actor_set_reactive (rect, TRUE);
g_signal_connect_swapped (rect, "button-press-event",
G_CALLBACK (expand_clicked_cb), stage);
width += clutter_actor_get_width (rect);
clutter_stage_set_minimum_size (CLUTTER_STAGE (stage),
width,
clutter_actor_get_height (rect));
clutter_actor_show (stage);
clutter_main ();
return EXIT_SUCCESS;
}