From 7b5e5b772740a4067925f39be85cd9e9e8438479 Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Wed, 9 Nov 2011 09:09:37 +0000 Subject: [PATCH 01/43] main: Add a debug note when reading the settings file So that's easier to track in the debug log. --- clutter/clutter-main.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/clutter/clutter-main.c b/clutter/clutter-main.c index c24d399e3..503a6b04e 100644 --- a/clutter/clutter-main.c +++ b/clutter/clutter-main.c @@ -397,6 +397,8 @@ clutter_config_read_from_file (const gchar *config_path) g_key_file_load_from_file (key_file, config_path, G_KEY_FILE_NONE, &error); if (error == NULL) { + CLUTTER_NOTE (MISC, "Reading configuration from '%s'", config_path); + clutter_config_read_from_key_file (key_file); #ifdef CLUTTER_ENABLE_DEBUG clutter_debug_read_from_key_file (key_file); From d596401a3c1f88d396c06702ed488328ff4d1bd8 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Fri, 4 Nov 2011 07:14:47 -0400 Subject: [PATCH 02/43] cally: Use the proper role for password entries https://bugzilla.gnome.org/show_bug.cgi?id=663332 --- clutter/cally/cally-text.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/clutter/cally/cally-text.c b/clutter/cally/cally-text.c index 1c7c68622..b601d1366 100644 --- a/clutter/cally/cally-text.c +++ b/clutter/cally/cally-text.c @@ -344,7 +344,10 @@ cally_text_real_initialize(AtkObject *obj, _check_activate_action (cally_text, clutter_text); - obj->role = ATK_ROLE_TEXT; + if (clutter_text_get_password_char (clutter_text) != 0) + obj->role = ATK_ROLE_PASSWORD_TEXT; + else + obj->role = ATK_ROLE_TEXT; } static const gchar * @@ -1091,6 +1094,13 @@ cally_text_notify_clutter (GObject *obj, { _check_activate_action (cally_text, clutter_text); } + else if (g_strcmp0 (pspec->name, "password-char") == 0) + { + if (clutter_text_get_password_char (clutter_text) != 0) + atk_object_set_role (atk_obj, ATK_ROLE_PASSWORD_TEXT); + else + atk_object_set_role (atk_obj, ATK_ROLE_TEXT); + } else { CALLY_ACTOR_CLASS (cally_text_parent_class)->notify_clutter (obj, pspec); From 33303f92f3c3d164ab8c477d99af25e10e9520c2 Mon Sep 17 00:00:00 2001 From: "Craig R. Hughes" Date: Mon, 7 Nov 2011 17:00:45 -0800 Subject: [PATCH 03/43] Minor whitespace fix for clutter color parsing of hsla(h,s,l,a) Previously, if there was whitespace between "l" and the comma before the alpha value, parsing would fail. This patch allows that whitespace making it consistent with whitespace being allowed everywhere else. https://bugzilla.gnome.org/show_bug.cgi?id=663594 --- clutter/clutter-color.c | 1 + 1 file changed, 1 insertion(+) diff --git a/clutter/clutter-color.c b/clutter/clutter-color.c index e8ecf44c2..17b8b3c5d 100644 --- a/clutter/clutter-color.c +++ b/clutter/clutter-color.c @@ -589,6 +589,7 @@ parse_hsla (ClutterColor *color, str += 1; l = CLAMP (number / 100.0, 0.0, 1.0); + skip_whitespace (&str); /* alpha (optional); since the alpha channel value can only * be between 0 and 1 we don't use the parse_rgb_value() From b96773f9c9b3c397ade8e88b3b3523e63732843f Mon Sep 17 00:00:00 2001 From: "Jasper St. Pierre" Date: Wed, 9 Nov 2011 16:37:32 -0500 Subject: [PATCH 04/43] clutter-stage-x11: Make sure to set geometry x and y Otherwise, we could be dealing with uninitialized values, causing havoc all over the place. https://bugzilla.gnome.org/show_bug.cgi?id=663733 --- clutter/x11/clutter-stage-x11.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/clutter/x11/clutter-stage-x11.c b/clutter/x11/clutter-stage-x11.c index f9ae163a8..edf7b9c48 100644 --- a/clutter/x11/clutter-stage-x11.c +++ b/clutter/x11/clutter-stage-x11.c @@ -204,6 +204,8 @@ clutter_stage_x11_get_geometry (ClutterStageWindow *stage_window, ClutterStageCogl *stage_cogl = CLUTTER_STAGE_COGL (stage_x11); ClutterBackendX11 *backend_x11 = CLUTTER_BACKEND_X11 (stage_cogl->backend); + geometry->x = geometry->y = 0; + /* If we're fullscreen, return the size of the display. */ if ((stage_x11->state & CLUTTER_STAGE_STATE_FULLSCREEN) && stage_x11->fullscreening) From 889a1f44f422224c4d652256197b6358d2b74fc4 Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Thu, 10 Nov 2011 12:56:47 +0000 Subject: [PATCH 05/43] conform/color: Test hsla() format --- tests/conform/test-color.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tests/conform/test-color.c b/tests/conform/test-color.c index a0eab9519..a6f4327d1 100644 --- a/tests/conform/test-color.c +++ b/tests/conform/test-color.c @@ -205,6 +205,20 @@ test_color_from_string (TestConformSimpleFixture *fixture, g_assert_cmpint (color.green, ==, 0); g_assert_cmpint (color.blue, ==, 0); g_assert_cmpint (color.alpha, ==, 255); + + g_assert (clutter_color_from_string (&color, "hsla( 0, 100%, 50%, 0.5 )")); + if (g_test_verbose ()) + { + g_print ("color = { %x, %x, %x, %x }, expected = { 255, 0, 0, 127 }\n", + color.red, + color.green, + color.blue, + color.alpha); + } + g_assert_cmpint (color.red, ==, 255); + g_assert_cmpint (color.green, ==, 0); + g_assert_cmpint (color.blue, ==, 0); + g_assert_cmpint (color.alpha, ==, 127); } void From 0550a8b99d0589ef9a196c6787577a0975014f3f Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Thu, 10 Nov 2011 14:13:45 +0000 Subject: [PATCH 06/43] color: Validate hex formats Right now, we pass through to Pango unrecognized hexadecimal formats when parsing colors from strings. Since we parse all possible formats ourselves, we can do validation ourselves as well, and avoid the Pango path. --- clutter/clutter-color.c | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/clutter/clutter-color.c b/clutter/clutter-color.c index 17b8b3c5d..cef0109a4 100644 --- a/clutter/clutter-color.c +++ b/clutter/clutter-color.c @@ -720,17 +720,16 @@ clutter_color_from_string (ClutterColor *color, * parsing the color ourselves, as we need the alpha channel that * Pango can't retrieve. */ - if (str[0] == '#') + if (str[0] == '#' && str[1] != '\0') { + gsize length = strlen (str + 1); gint32 result; - if (sscanf (str + 1, "%x", &result)) + if (sscanf (str + 1, "%x", &result) == 1) { - gsize length = strlen (str); - switch (length) { - case 9: /* rrggbbaa */ + case 8: /* rrggbbaa */ color->red = (result >> 24) & 0xff; color->green = (result >> 16) & 0xff; color->blue = (result >> 8) & 0xff; @@ -739,7 +738,7 @@ clutter_color_from_string (ClutterColor *color, return TRUE; - case 7: /* #rrggbb */ + case 6: /* #rrggbb */ color->red = (result >> 16) & 0xff; color->green = (result >> 8) & 0xff; color->blue = result & 0xff; @@ -748,7 +747,7 @@ clutter_color_from_string (ClutterColor *color, return TRUE; - case 5: /* #rgba */ + case 4: /* #rgba */ color->red = ((result >> 12) & 0xf); color->green = ((result >> 8) & 0xf); color->blue = ((result >> 4) & 0xf); @@ -761,7 +760,7 @@ clutter_color_from_string (ClutterColor *color, return TRUE; - case 4: /* #rgb */ + case 3: /* #rgb */ color->red = ((result >> 8) & 0xf); color->green = ((result >> 4) & 0xf); color->blue = result & 0xf; @@ -775,13 +774,18 @@ clutter_color_from_string (ClutterColor *color, return TRUE; default: - /* pass through to Pango */ - break; + return FALSE; } } } - /* Fall back to pango for named colors */ + /* fall back to pango for X11-style named colors; see: + * + * http://en.wikipedia.org/wiki/X11_color_names + * + * for a list. at some point we might even ship with our own list generated + * from X11/rgb.txt, like we generate the key symbols. + */ if (pango_color_parse (&pango_color, str)) { color->red = pango_color.red; From e374c2bd8922049ab9c0e285baf21e56641ec974 Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Thu, 10 Nov 2011 14:15:32 +0000 Subject: [PATCH 07/43] conform/color: Check invalid strings We need to make sure to fail consistently for invalid strings. --- tests/conform/test-color.c | 20 ++++++++++++++++++-- tests/conform/test-conform-main.c | 3 ++- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/tests/conform/test-color.c b/tests/conform/test-color.c index a6f4327d1..a212e8384 100644 --- a/tests/conform/test-color.c +++ b/tests/conform/test-color.c @@ -73,8 +73,24 @@ test_color_hls_roundtrip (TestConformSimpleFixture *fixture, } void -test_color_from_string (TestConformSimpleFixture *fixture, - gconstpointer data) +test_color_from_string_invalid (TestConformSimpleFixture *fixture, + gconstpointer data) +{ + ClutterColor color; + + g_assert (!clutter_color_from_string (&color, "ff0000ff")); + g_assert (!clutter_color_from_string (&color, "#decaffbad")); + g_assert (!clutter_color_from_string (&color, "ponies")); + g_assert (!clutter_color_from_string (&color, "rgb(255, 0, 0, 0)")); + g_assert (!clutter_color_from_string (&color, "rgba(1.0, 0, 0)")); + g_assert (!clutter_color_from_string (&color, "hsl(100, 0, 0)")); + g_assert (!clutter_color_from_string (&color, "hsla(10%, 0%, 50%)")); + g_assert (!clutter_color_from_string (&color, "hsla(100%, 0%, 50%, 20%)")); +} + +void +test_color_from_string_valid (TestConformSimpleFixture *fixture, + gconstpointer data) { ClutterColor color; diff --git a/tests/conform/test-conform-main.c b/tests/conform/test-conform-main.c index 50557724d..3373e9481 100644 --- a/tests/conform/test-conform-main.c +++ b/tests/conform/test-conform-main.c @@ -182,7 +182,8 @@ main (int argc, char **argv) TEST_CONFORM_SIMPLE ("/model", test_list_model_from_script); TEST_CONFORM_SIMPLE ("/model", test_list_model_row_changed); - TEST_CONFORM_SIMPLE ("/color", test_color_from_string); + TEST_CONFORM_SIMPLE ("/color", test_color_from_string_valid); + TEST_CONFORM_SIMPLE ("/color", test_color_from_string_invalid); TEST_CONFORM_SIMPLE ("/color", test_color_to_string); TEST_CONFORM_SIMPLE ("/color", test_color_hls_roundtrip); TEST_CONFORM_SIMPLE ("/color", test_color_operators); From 790c0d1f9128ea64b84db944ef2ac853bfd8e057 Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Thu, 3 Nov 2011 16:45:56 +0000 Subject: [PATCH 08/43] backend: Provide an implementation of ensure_backend() We can do it for all Cogl-based backends. --- clutter/clutter-backend.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/clutter/clutter-backend.c b/clutter/clutter-backend.c index 7243cac8a..e448a27f5 100644 --- a/clutter/clutter-backend.c +++ b/clutter/clutter-backend.c @@ -50,6 +50,7 @@ #include "clutter-profile.h" #include "clutter-stage-manager-private.h" #include "clutter-stage-private.h" +#include "clutter-stage-window.h" #include "clutter-version.h" #include @@ -205,6 +206,27 @@ clutter_backend_real_font_changed (ClutterBackend *backend) CLUTTER_NOTE (BACKEND, "Units per em: %.2f", priv->units_per_em); } +static void +clutter_backend_real_ensure_context (ClutterBackend *backend, + ClutterStage *stage) +{ + ClutterStageWindow *stage_impl; + CoglFramebuffer *framebuffer; + + if (stage == NULL) + return; + + stage_impl = _clutter_stage_get_window (stage); + if (stage_impl == NULL) + return; + + framebuffer = _clutter_stage_window_get_active_framebuffer (stage_impl); + if (framebuffer == NULL) + return; + + cogl_set_framebuffer (framebuffer); +} + static void clutter_backend_real_redraw (ClutterBackend *backend, ClutterStage *stage) @@ -316,7 +338,9 @@ clutter_backend_class_init (ClutterBackendClass *klass) klass->resolution_changed = clutter_backend_real_resolution_changed; klass->font_changed = clutter_backend_real_font_changed; + klass->translate_event = clutter_backend_real_translate_event; + klass->ensure_context = clutter_backend_real_ensure_context; klass->redraw = clutter_backend_real_redraw; } From 0c02e8adb31413e4d19c101a94da91834558b9b3 Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Thu, 3 Nov 2011 16:46:48 +0000 Subject: [PATCH 09/43] cogl/backend: Remove ensure_context() We have a default implementation for it, now. --- clutter/cogl/clutter-backend-cogl.c | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/clutter/cogl/clutter-backend-cogl.c b/clutter/cogl/clutter-backend-cogl.c index af0ad1400..b5b8d9e0a 100644 --- a/clutter/cogl/clutter-backend-cogl.c +++ b/clutter/cogl/clutter-backend-cogl.c @@ -169,22 +169,6 @@ clutter_backend_cogl_get_features (ClutterBackend *backend) return flags; } -static void -clutter_backend_cogl_ensure_context (ClutterBackend *backend, - ClutterStage *stage) -{ - ClutterStageCogl *stage_cogl; - - /* ignore ensuring the context on an empty stage */ - if (stage == NULL) - return; - - stage_cogl = - CLUTTER_STAGE_COGL (_clutter_stage_get_window (stage)); - - cogl_set_framebuffer (COGL_FRAMEBUFFER (stage_cogl->onscreen)); -} - static void _clutter_backend_cogl_class_init (ClutterBackendCoglClass *klass) { @@ -198,7 +182,6 @@ _clutter_backend_cogl_class_init (ClutterBackendCoglClass *klass) backend_class->pre_parse = clutter_backend_cogl_pre_parse; backend_class->post_parse = clutter_backend_cogl_post_parse; backend_class->get_features = clutter_backend_cogl_get_features; - backend_class->ensure_context = clutter_backend_cogl_ensure_context; } static void From 42af690255f2b32af6a778df312211001a2c1fc2 Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Thu, 3 Nov 2011 16:47:18 +0000 Subject: [PATCH 10/43] wayland/backend: Remove empty ensure_context() There is a default fallback, now. --- clutter/wayland/clutter-backend-wayland.c | 7 ------- 1 file changed, 7 deletions(-) diff --git a/clutter/wayland/clutter-backend-wayland.c b/clutter/wayland/clutter-backend-wayland.c index 361de4e48..55d9be2c3 100644 --- a/clutter/wayland/clutter-backend-wayland.c +++ b/clutter/wayland/clutter-backend-wayland.c @@ -484,12 +484,6 @@ clutter_backend_wayland_create_context (ClutterBackend *backend, return status; } -static void -clutter_backend_wayland_ensure_context (ClutterBackend *backend, - ClutterStage *stage) -{ -} - static void clutter_backend_wayland_redraw (ClutterBackend *backend, ClutterStage *stage) @@ -637,7 +631,6 @@ _clutter_backend_wayland_class_init (ClutterBackendWaylandClass *klass) backend_class->init_events = clutter_backend_wayland_init_events; backend_class->create_stage = clutter_backend_wayland_create_stage; backend_class->create_context = clutter_backend_wayland_create_context; - backend_class->ensure_context = clutter_backend_wayland_ensure_context; backend_class->redraw = clutter_backend_wayland_redraw; } From 672ab70144b9270535f6371ae79921d72cbada58 Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Thu, 3 Nov 2011 16:47:57 +0000 Subject: [PATCH 11/43] win32/stage: Implement get_active_framebuffer() --- clutter/win32/clutter-stage-win32.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/clutter/win32/clutter-stage-win32.c b/clutter/win32/clutter-stage-win32.c index b82c824db..d2b2cb55a 100644 --- a/clutter/win32/clutter-stage-win32.c +++ b/clutter/win32/clutter-stage-win32.c @@ -538,6 +538,14 @@ clutter_stage_win32_redraw (ClutterStageWindow *stage_window) cogl_framebuffer_swap_buffers (COGL_FRAMEBUFFER (stage_win32->onscreen)); } +static CoglFramebuffer * +clutter_stage_win32_get_active_framebuffer (ClutterStageWindow *stage_window) +{ + ClutterStageWin32 *stage_win32 = CLUTTER_STAGE_WIN32 (stage_window); + + return COGL_FRAMEBUFFER (stage_win32->onscreen); +} + static void clutter_stage_win32_dispose (GObject *gobject) { @@ -598,6 +606,7 @@ clutter_stage_window_iface_init (ClutterStageWindowIface *iface) iface->realize = clutter_stage_win32_realize; iface->unrealize = clutter_stage_win32_unrealize; iface->redraw = clutter_stage_win32_redraw; + iface->get_active_framebuffer = clutter_stage_win32_get_active_framebuffer; } /** From 84d208b2c6c774a27d7d00ef5136bf31ebe82310 Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Thu, 3 Nov 2011 16:48:20 +0000 Subject: [PATCH 12/43] win32/backend: Remove ensure_context() We have a fallback, now. --- clutter/win32/clutter-backend-win32.c | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/clutter/win32/clutter-backend-win32.c b/clutter/win32/clutter-backend-win32.c index 3587c188d..044477341 100644 --- a/clutter/win32/clutter-backend-win32.c +++ b/clutter/win32/clutter-backend-win32.c @@ -271,16 +271,6 @@ error: return FALSE; } -static void -clutter_backend_win32_ensure_context (ClutterBackend *backend, - ClutterStage *stage) -{ - ClutterStageWin32 *stage_win32 = - CLUTTER_STAGE_WIN32 (_clutter_stage_get_window (stage)); - - cogl_set_framebuffer (COGL_FRAMEBUFFER (stage_win32->onscreen)); -} - static ClutterStageWindow * clutter_backend_win32_create_stage (ClutterBackend *backend, ClutterStage *wrapper, @@ -355,7 +345,6 @@ clutter_backend_win32_class_init (ClutterBackendWin32Class *klass) backend_class->add_options = clutter_backend_win32_add_options; backend_class->get_features = clutter_backend_win32_get_features; backend_class->create_context = clutter_backend_win32_create_context; - backend_class->ensure_context = clutter_backend_win32_ensure_context; backend_class->get_device_manager = clutter_backend_win32_get_device_manager; } From adb6ffbd0e67f1f43a7fbcd8df53a94fb7b241e8 Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Thu, 3 Nov 2011 17:53:54 +0000 Subject: [PATCH 13/43] backend: Unify the event initialization Input backends are, in some cases, independent from the windowing system backends; we can initialize input handling using a model similar to what we use for windowing backends, including an environment variable and compile-/run-time checks. This model allows us to remove the backend-specific init_events(), and use a generic implementation directly inside the base ClutterBackend class, thus further reducing the backend-specific code that every platform has to implement. This requires some minor surgery to every single backend, to make sure that the function exposed to initialize the event loop is similar and performs roughly the same operations. --- clutter/clutter-backend.c | 85 ++++++++++- clutter/egl/clutter-backend-eglnative.c | 26 ---- clutter/gdk/clutter-backend-gdk.c | 24 ++- clutter/gdk/clutter-backend-gdk.h | 4 +- clutter/gdk/clutter-event-gdk.c | 21 --- clutter/osx/clutter-backend-osx.c | 11 +- clutter/osx/clutter-backend-osx.h | 6 +- clutter/osx/clutter-event-osx.c | 14 -- clutter/wayland/clutter-backend-wayland.c | 6 - clutter/x11/clutter-backend-x11-private.h | 32 ---- clutter/x11/clutter-backend-x11.c | 58 +++++--- clutter/x11/clutter-backend-x11.h | 37 ++--- clutter/x11/clutter-event-x11.c | 173 ++++++---------------- configure.ac | 12 +- 14 files changed, 206 insertions(+), 303 deletions(-) delete mode 100644 clutter/x11/clutter-backend-x11-private.h diff --git a/clutter/clutter-backend.c b/clutter/clutter-backend.c index e448a27f5..4891bffa3 100644 --- a/clutter/clutter-backend.c +++ b/clutter/clutter-backend.c @@ -55,6 +55,23 @@ #include +#ifdef CLUTTER_INPUT_X11 +#include "x11/clutter-backend-x11.h" +#endif +#ifdef CLUTTER_INPUT_WIN32 +#include "win32/clutter-backend-win32.h" +#endif +#ifdef CLUTTER_INPUT_OSX +#include "osx/clutter-backend-osx.h" +#endif +#ifdef CLUTTER_INPUT_EVDEV +#include "evdev/clutter-device-manager-evdev.h" +#endif +#ifdef CLUTTER_INPUT_TSLIB +/* XXX - should probably warn, here */ +#include "tslib/clutter-event-tslib.h" +#endif + G_DEFINE_ABSTRACT_TYPE (ClutterBackend, clutter_backend, G_TYPE_OBJECT); #define DEFAULT_FONT_NAME "Sans 10" @@ -243,6 +260,70 @@ clutter_backend_real_redraw (ClutterBackend *backend, _clutter_stage_window_redraw (impl); } +static void +clutter_backend_real_init_events (ClutterBackend *backend) +{ + const char *input_backend = NULL; + + input_backend = g_getenv ("CLUTTER_INPUT_BACKEND"); + if (input_backend != NULL) + input_backend = g_intern_string (input_backend); + +#ifdef CLUTTER_INPUT_X11 + if (clutter_check_windowing_backend (CLUTTER_WINDOWING_X11) && + (input_backend == NULL || input_backend == I_(CLUTTER_INPUT_X11))) + { + _clutter_backend_x11_events_init (backend); + } + else +#endif +#ifdef CLUTTER_INPUT_OSX + if (clutter_check_windowing_backend (CLUTTER_WINDOWING_OSX) && + (input_backend == NULL || input_backend == I_(CLUTTER_INPUT_OSX))) + { + _clutter_backend_osx_events_init (backend); + } +#endif +#ifdef CLUTTER_INPUT_WIN32 + if (clutter_check_windowing_backend (CLUTTER_WINDOWING_WIN32) && + (input_backend == NULL || input_backend == I_(CLUTTER_INPUT_WIN32))) + { + _clutter_backend_win32_events_init (backend); + } + else +#endif +#ifdef CLUTTER_INPUT_GDK + if (clutter_check_windowing_backend (CLUTTER_WINDOWING_GDK) && + (input_backend == NULL || input_backend == I_(CLUTTER_INPUT_GDK))) + { + _clutter_backend_gdk_events_init (backend); + } + else +#endif +#ifdef CLUTTER_INPUT_EVDEV + /* Evdev can be used regardless of the windowing system */ + if (input_backend != NULL && + strcmp (input_backend, CLUTTER_INPUT_EVDEV) == 0) + { + _clutter_events_evdev_init (backend); + } + else +#endif +#ifdef CLUTTER_INPUT_TSLIB + /* Tslib can be used regardless of the windowing system */ + if (input_backend != NULL && + strcmp (input_backend, CLUTTER_INPUT_TSLIB) == 0) + { + _clutter_events_tslib_init (backend); + } + else +#endif + if (input_backend != NULL) + g_error ("Unrecognized input backend '%s'", input_backend); + else + g_error ("Unknown input backend"); +} + static gboolean clutter_backend_real_translate_event (ClutterBackend *backend, gpointer native, @@ -339,6 +420,7 @@ clutter_backend_class_init (ClutterBackendClass *klass) klass->resolution_changed = clutter_backend_real_resolution_changed; klass->font_changed = clutter_backend_real_font_changed; + klass->init_events = clutter_backend_real_init_events; klass->translate_event = clutter_backend_real_translate_event; klass->ensure_context = clutter_backend_real_ensure_context; klass->redraw = clutter_backend_real_redraw; @@ -591,8 +673,7 @@ _clutter_backend_init_events (ClutterBackend *backend) g_assert (CLUTTER_IS_BACKEND (backend)); klass = CLUTTER_BACKEND_GET_CLASS (backend); - if (klass->init_events) - klass->init_events (backend); + klass->init_events (backend); } gfloat diff --git a/clutter/egl/clutter-backend-eglnative.c b/clutter/egl/clutter-backend-eglnative.c index 573582022..e14d8aca1 100644 --- a/clutter/egl/clutter-backend-eglnative.c +++ b/clutter/egl/clutter-backend-eglnative.c @@ -88,31 +88,6 @@ clutter_backend_egl_native_get_device_manager (ClutterBackend *backend) return backend_egl_native->device_manager; } -static void -clutter_backend_egl_native_init_events (ClutterBackend *backend) -{ - const char *input_backend = NULL; - - input_backend = g_getenv ("CLUTTER_INPUT_BACKEND"); - -#ifdef HAVE_EVDEV - if (input_backend != NULL && - strcmp (input_backend, CLUTTER_EVDEV_INPUT_BACKEND) == 0) - _clutter_events_evdev_init (CLUTTER_BACKEND (backend)); - else -#endif -#ifdef HAVE_TSLIB - if (input_backend != NULL && - strcmp (input_backend, CLUTTER_TSLIB_INPUT_BACKEND) == 0) - _clutter_events_tslib_init (CLUTTER_BACKEND (backend)); - else -#endif - if (input_backend != NULL) - g_error ("Unrecognized input backend '%s'", input_backend); - else - g_error ("Unknown input backend"); -} - static void clutter_backend_egl_native_dispose (GObject *gobject) { @@ -249,7 +224,6 @@ clutter_backend_egl_native_class_init (ClutterBackendEglNativeClass *klass) gobject_class->dispose = clutter_backend_egl_native_dispose; backend_class->get_device_manager = clutter_backend_egl_native_get_device_manager; - backend_class->init_events = clutter_backend_egl_native_init_events; backend_class->create_stage = clutter_backend_egl_native_create_stage; backend_class->create_context = clutter_backend_egl_native_create_context; } diff --git a/clutter/gdk/clutter-backend-gdk.c b/clutter/gdk/clutter-backend-gdk.c index e89e01749..ea4f0f771 100644 --- a/clutter/gdk/clutter-backend-gdk.c +++ b/clutter/gdk/clutter-backend-gdk.c @@ -182,14 +182,20 @@ _clutter_backend_gdk_post_parse (ClutterBackend *backend, error); } - static void -clutter_backend_gdk_init_events (ClutterBackend *backend) +gdk_event_handler (GdkEvent *event, + gpointer user_data) +{ + clutter_gdk_handle_event (event); +} + +void +_clutter_backend_gdk_events_init (ClutterBackend *backend) { CLUTTER_NOTE (EVENT, "initialising the event loop"); if (!disable_event_retrieval) - _clutter_backend_gdk_events_init (backend); + gdk_event_handler_set (gdk_event_handler, NULL, NULL); } static void @@ -206,17 +212,6 @@ clutter_backend_gdk_finalize (GObject *gobject) static void clutter_backend_gdk_dispose (GObject *gobject) { - ClutterBackendGdk *backend_gdk = CLUTTER_BACKEND_GDK (gobject); - ClutterStageManager *stage_manager; - - CLUTTER_NOTE (BACKEND, "Disposing the of stages"); - stage_manager = clutter_stage_manager_get_default (); - - g_object_unref (stage_manager); - - CLUTTER_NOTE (BACKEND, "Removing the event source"); - _clutter_backend_gdk_events_uninit (CLUTTER_BACKEND (backend_gdk)); - G_OBJECT_CLASS (clutter_backend_gdk_parent_class)->dispose (gobject); } @@ -384,7 +379,6 @@ clutter_backend_gdk_class_init (ClutterBackendGdkClass *klass) gobject_class->finalize = clutter_backend_gdk_finalize; backend_class->post_parse = _clutter_backend_gdk_post_parse; - backend_class->init_events = clutter_backend_gdk_init_events; backend_class->get_features = clutter_backend_gdk_get_features; backend_class->get_device_manager = clutter_backend_gdk_get_device_manager; backend_class->copy_event_data = clutter_backend_gdk_copy_event_data; diff --git a/clutter/gdk/clutter-backend-gdk.h b/clutter/gdk/clutter-backend-gdk.h index 73d8de190..73f8d8642 100644 --- a/clutter/gdk/clutter-backend-gdk.h +++ b/clutter/gdk/clutter-backend-gdk.h @@ -64,9 +64,9 @@ struct _ClutterBackendGdkClass GType _clutter_backend_gdk_get_type (void) G_GNUC_CONST; void _clutter_backend_gdk_events_init (ClutterBackend *backend); -void _clutter_backend_gdk_events_uninit (ClutterBackend *backend); -void _clutter_backend_gdk_update_setting (ClutterBackendGdk *backend, const gchar *name); +void _clutter_backend_gdk_update_setting (ClutterBackendGdk *backend, + const gchar *name); G_END_DECLS diff --git a/clutter/gdk/clutter-event-gdk.c b/clutter/gdk/clutter-event-gdk.c index 540d7d42a..5d8f1a781 100644 --- a/clutter/gdk/clutter-event-gdk.c +++ b/clutter/gdk/clutter-event-gdk.c @@ -43,27 +43,6 @@ #include -static void -gdk_event_handler (GdkEvent *event, - gpointer user_data) -{ - clutter_gdk_handle_event (event); -} - -void -_clutter_backend_gdk_events_init (ClutterBackend *backend) -{ - gdk_event_handler_set (gdk_event_handler, NULL, NULL); - - CLUTTER_NOTE (EVENT, "GDK event handler set"); -} - -void -_clutter_backend_gdk_events_uninit (ClutterBackend *backend) -{ - gdk_event_handler_set (NULL, NULL, NULL); -} - /** * clutter_gdk_handle_event: * @event: a #GdkEvent diff --git a/clutter/osx/clutter-backend-osx.c b/clutter/osx/clutter-backend-osx.c index 9590724da..dae061496 100644 --- a/clutter/osx/clutter-backend-osx.c +++ b/clutter/osx/clutter-backend-osx.c @@ -28,6 +28,7 @@ #include "clutter-device-manager-osx.h" #include "clutter-shader.h" #include "clutter-stage-osx.h" +#include "clutter-event-loop-osx.h" #include "clutter-debug.h" #include "clutter-private.h" @@ -37,6 +38,8 @@ #import +#define clutter_backend_osx_get_type _clutter_backend_osx_get_type + G_DEFINE_TYPE (ClutterBackendOSX, clutter_backend_osx, CLUTTER_TYPE_BACKEND) /*************************************************************************/ @@ -112,8 +115,8 @@ clutter_backend_osx_get_device_manager (ClutterBackend *backend) return backend_osx->device_manager; } -static void -clutter_backend_osx_init_events (ClutterBackend *backend) +void +_clutter_backend_osx_events_init (ClutterBackend *backend) { ClutterBackendOSX *backend_osx = CLUTTER_BACKEND_OSX (backend); @@ -123,7 +126,8 @@ clutter_backend_osx_init_events (ClutterBackend *backend) CLUTTER_NOTE (BACKEND, "init_events"); clutter_backend_osx_create_device_manager (backend_osx); - _clutter_events_osx_init (); + + _clutter_osx_event_loop_init (); } static gboolean @@ -250,6 +254,5 @@ clutter_backend_osx_class_init (ClutterBackendOSXClass *klass) backend_class->create_stage = clutter_backend_osx_create_stage; backend_class->create_context = clutter_backend_osx_create_context; backend_class->ensure_context = clutter_backend_osx_ensure_context; - backend_class->init_events = clutter_backend_osx_init_events; backend_class->get_device_manager = clutter_backend_osx_get_device_manager; } diff --git a/clutter/osx/clutter-backend-osx.h b/clutter/osx/clutter-backend-osx.h index 8651bbcf5..4e0cf6706 100644 --- a/clutter/osx/clutter-backend-osx.h +++ b/clutter/osx/clutter-backend-osx.h @@ -30,7 +30,7 @@ G_BEGIN_DECLS -#define CLUTTER_TYPE_BACKEND_OSX (clutter_backend_osx_get_type()) +#define CLUTTER_TYPE_BACKEND_OSX (_clutter_backend_osx_get_type()) #define CLUTTER_BACKEND_OSX(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),CLUTTER_TYPE_BACKEND_OSX,ClutterBackendOSX)) #define CLUTTER_BACKEND_OSX_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),CLUTTER_TYPE_BACKEND_OSX,ClutterBackend)) #define CLUTTER_IS_BACKEND_OSX(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),CLUTTER_TYPE_BACKEND_OSX)) @@ -54,7 +54,9 @@ struct _ClutterBackendOSXClass ClutterBackendClass parent_class; }; -GType clutter_backend_osx_get_type (void) G_GNUC_CONST; +GType _clutter_backend_osx_get_type (void) G_GNUC_CONST; + +void _clutter_backend_osx_events_init (ClutterBackend *backend); G_END_DECLS diff --git a/clutter/osx/clutter-event-osx.c b/clutter/osx/clutter-event-osx.c index 9f5c9330d..6ba14f607 100644 --- a/clutter/osx/clutter-event-osx.c +++ b/clutter/osx/clutter-event-osx.c @@ -38,8 +38,6 @@ #include "clutter-private.h" #include "clutter-stage-private.h" -#include "clutter-event-loop-osx.h" - #define WHEEL_DELTA 1 /*************************************************************************/ @@ -491,15 +489,3 @@ _clutter_event_osx_put (NSEvent *nsevent, else clutter_event_free (event); } - -void -_clutter_events_osx_init (void) -{ - _clutter_osx_event_loop_init (); -} - -void -_clutter_events_osx_uninit (void) -{ - g_assert_not_reached (); -} diff --git a/clutter/wayland/clutter-backend-wayland.c b/clutter/wayland/clutter-backend-wayland.c index 55d9be2c3..217fbf254 100644 --- a/clutter/wayland/clutter-backend-wayland.c +++ b/clutter/wayland/clutter-backend-wayland.c @@ -499,11 +499,6 @@ clutter_backend_wayland_redraw (ClutterBackend *backend, _clutter_stage_wayland_redraw (CLUTTER_STAGE_WAYLAND (impl), stage); } -static void -clutter_backend_wayland_init_events (ClutterBackend *backend) -{ -} - static void clutter_backend_wayland_finalize (GObject *gobject) { @@ -628,7 +623,6 @@ _clutter_backend_wayland_class_init (ClutterBackendWaylandClass *klass) backend_class->pre_parse = clutter_backend_wayland_pre_parse; backend_class->post_parse = clutter_backend_wayland_post_parse; backend_class->get_features = clutter_backend_wayland_get_features; - backend_class->init_events = clutter_backend_wayland_init_events; backend_class->create_stage = clutter_backend_wayland_create_stage; backend_class->create_context = clutter_backend_wayland_create_context; backend_class->redraw = clutter_backend_wayland_redraw; diff --git a/clutter/x11/clutter-backend-x11-private.h b/clutter/x11/clutter-backend-x11-private.h deleted file mode 100644 index 18c53facd..000000000 --- a/clutter/x11/clutter-backend-x11-private.h +++ /dev/null @@ -1,32 +0,0 @@ -/* An OpenGL based 'interactive canvas' library. - * Authored By Matthew Allum - * Copyright (C) 2006-2007 OpenedHand - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library. If not, see . - * - * - */ - -#ifndef __CLUTTER_BACKEND_PRIVATE_X11_H__ -#define __CLUTTER_BACKEND_PRIVATE_X11_H__ - - -G_BEGIN_DECLS - -void _clutter_backend_x11_events_init (ClutterBackend *backend); -void _clutter_backend_x11_events_uninit (ClutterBackend *backend); - -G_END_DECLS - -#endif diff --git a/clutter/x11/clutter-backend-x11.c b/clutter/x11/clutter-backend-x11.c index 97b77da9b..fa3c84deb 100644 --- a/clutter/x11/clutter-backend-x11.c +++ b/clutter/x11/clutter-backend-x11.c @@ -411,12 +411,6 @@ _clutter_backend_x11_post_parse (ClutterBackend *backend, g_object_set (settings, "font-dpi", (int) dpi * 1024, NULL); - /* create the device manager */ - clutter_backend_x11_create_device_manager (backend_x11); - - /* register keymap */ - clutter_backend_x11_create_keymap (backend_x11); - /* create XSETTINGS client */ backend_x11->xsettings = _clutter_xsettings_client_new (backend_x11->xdpy, @@ -461,14 +455,46 @@ _clutter_backend_x11_post_parse (ClutterBackend *backend, error); } - -static void -clutter_backend_x11_init_events (ClutterBackend *backend) +void +_clutter_backend_x11_events_init (ClutterBackend *backend) { + ClutterBackendX11 *backend_x11 = CLUTTER_BACKEND_X11 (backend); + CLUTTER_NOTE (EVENT, "initialising the event loop"); + /* the event source is optional */ if (!_no_xevent_retrieval) - _clutter_backend_x11_events_init (backend); + { + GSource *source; + + source = _clutter_x11_event_source_new (backend_x11); + + /* default priority for events + * + * XXX - at some point we'll have a common EventSource API that + * is created by the backend, and this code will most likely go + * into the default implementation of ClutterBackend + */ + g_source_set_priority (source, CLUTTER_PRIORITY_EVENTS); + + /* attach the source to the default context, and transfer the + * ownership to the GMainContext itself + */ + g_source_attach (source, NULL); + g_source_unref (source); + + backend_x11->event_source = source; + } + + /* create the device manager; we need this because we can effectively + * choose between core+XI1 and XI2 input events + */ + clutter_backend_x11_create_device_manager (backend_x11); + + /* register keymap; unless we create a generic Keymap object, I'm + * afraid this will have to stay + */ + clutter_backend_x11_create_keymap (backend_x11); } static const GOptionEntry entries[] = @@ -528,17 +554,6 @@ clutter_backend_x11_finalize (GObject *gobject) static void clutter_backend_x11_dispose (GObject *gobject) { - ClutterBackendX11 *backend_x11 = CLUTTER_BACKEND_X11 (gobject); - ClutterStageManager *stage_manager; - - CLUTTER_NOTE (BACKEND, "Disposing the of stages"); - stage_manager = clutter_stage_manager_get_default (); - - g_object_unref (stage_manager); - - CLUTTER_NOTE (BACKEND, "Removing the event source"); - _clutter_backend_x11_events_uninit (CLUTTER_BACKEND (backend_x11)); - G_OBJECT_CLASS (clutter_backend_x11_parent_class)->dispose (gobject); } @@ -825,7 +840,6 @@ clutter_backend_x11_class_init (ClutterBackendX11Class *klass) backend_class->pre_parse = _clutter_backend_x11_pre_parse; backend_class->post_parse = _clutter_backend_x11_post_parse; - backend_class->init_events = clutter_backend_x11_init_events; backend_class->add_options = clutter_backend_x11_add_options; backend_class->get_features = clutter_backend_x11_get_features; backend_class->get_device_manager = clutter_backend_x11_get_device_manager; diff --git a/clutter/x11/clutter-backend-x11.h b/clutter/x11/clutter-backend-x11.h index 701328577..9398616db 100644 --- a/clutter/x11/clutter-backend-x11.h +++ b/clutter/x11/clutter-backend-x11.h @@ -116,34 +116,27 @@ struct _ClutterBackendX11Class ClutterBackendCoglClass parent_class; }; -void _clutter_backend_x11_events_init (ClutterBackend *backend); -void _clutter_backend_x11_events_uninit (ClutterBackend *backend); - GType _clutter_backend_x11_get_type (void) G_GNUC_CONST; +void _clutter_backend_x11_events_init (ClutterBackend *backend); + +GSource * _clutter_x11_event_source_new (ClutterBackendX11 *backend_x11); + /* Private to glx/eglx backends */ -XVisualInfo * -_clutter_backend_x11_get_visual_info (ClutterBackendX11 *backend_x11); +XVisualInfo * _clutter_backend_x11_get_visual_info (ClutterBackendX11 *backend_x11); -void -_clutter_x11_select_events (Window xwin); +void _clutter_x11_select_events (Window xwin); -ClutterEventX11 * -_clutter_event_x11_new (void); +ClutterEventX11 * _clutter_event_x11_new (void); +ClutterEventX11 * _clutter_event_x11_copy (ClutterEventX11 *event_x11); +void _clutter_event_x11_free (ClutterEventX11 *event_x11); -ClutterEventX11 * -_clutter_event_x11_copy (ClutterEventX11 *event_x11); - -void -_clutter_event_x11_free (ClutterEventX11 *event_x11); - -gboolean -_clutter_x11_input_device_translate_screen_coord (ClutterInputDevice *device, - gint stage_root_x, - gint stage_root_y, - guint index_, - gdouble value, - gdouble *axis_value); +gboolean _clutter_x11_input_device_translate_screen_coord (ClutterInputDevice *device, + gint stage_root_x, + gint stage_root_y, + guint index_, + gdouble value, + gdouble *axis_value); G_END_DECLS diff --git a/clutter/x11/clutter-event-x11.c b/clutter/x11/clutter-event-x11.c index 3842b8716..3af161c2f 100644 --- a/clutter/x11/clutter-event-x11.c +++ b/clutter/x11/clutter-event-x11.c @@ -67,7 +67,8 @@ struct _ClutterEventSource { GSource source; - ClutterBackend *backend; + ClutterBackendX11 *backend; + GPollFD event_poll_fd; }; @@ -100,8 +101,6 @@ static gboolean clutter_event_dispatch (GSource *source, GSourceFunc callback, gpointer user_data); -static GList *event_sources = NULL; - static GSourceFuncs event_funcs = { clutter_event_prepare, clutter_event_check, @@ -109,150 +108,33 @@ static GSourceFuncs event_funcs = { NULL }; -static GSource * -clutter_event_source_new (ClutterBackend *backend) +GSource * +_clutter_x11_event_source_new (ClutterBackendX11 *backend_x11) { - GSource *source = g_source_new (&event_funcs, sizeof (ClutterEventSource)); - ClutterEventSource *event_source = (ClutterEventSource *) source; - - event_source->backend = backend; - - return source; -} - -static gboolean -check_xpending (ClutterBackend *backend) -{ - return XPending (CLUTTER_BACKEND_X11 (backend)->xdpy); -} - -#if 0 -static gboolean -xembed_send_message (ClutterBackendX11 *backend_x11, - Window window, - long message, - long detail, - long data1, - long data2) -{ - XEvent ev; - - memset (&ev, 0, sizeof (ev)); - - ev.xclient.type = ClientMessage; - ev.xclient.window = window; - ev.xclient.message_type = backend_x11->atom_XEMBED; - ev.xclient.format = 32; - ev.xclient.data.l[0] = CurrentTime; - ev.xclient.data.l[1] = message; - ev.xclient.data.l[2] = detail; - ev.xclient.data.l[3] = data1; - ev.xclient.data.l[4] = data2; - - clutter_x11_trap_x_errors (); - - XSendEvent (backend_x11->xdpy, window, False, NoEventMask, &ev); - XSync (backend_x11->xdpy, False); - - if (clutter_x11_untrap_x_errors ()) - return False; - - return True; -} - -static void -xembed_set_info (ClutterBackendX11 *backend_x11, - Window window, - gint flags) -{ - gint32 list[2]; - - list[0] = MAX_SUPPORTED_XEMBED_VERSION; - list[1] = XEMBED_MAPPED; - - XChangeProperty (backend_x11->xdpy, window, - backend_x11->atom_XEMBED_INFO, - backend_x11->atom_XEMBED_INFO, 32, - PropModeReplace, (unsigned char *) list, 2); -} -#endif - -void -_clutter_backend_x11_events_init (ClutterBackend *backend) -{ - ClutterBackendX11 *backend_x11 = CLUTTER_BACKEND_X11 (backend); - GSource *source; ClutterEventSource *event_source; int connection_number; + GSource *source; gchar *name; connection_number = ConnectionNumber (backend_x11->xdpy); CLUTTER_NOTE (EVENT, "Connection number: %d", connection_number); - source = backend_x11->event_source = clutter_event_source_new (backend); + source = g_source_new (&event_funcs, sizeof (ClutterEventSource)); event_source = (ClutterEventSource *) source; - g_source_set_priority (source, CLUTTER_PRIORITY_EVENTS); name = g_strdup_printf ("Clutter X11 Event (connection: %d)", connection_number); g_source_set_name (source, name); g_free (name); + event_source->backend = backend_x11; event_source->event_poll_fd.fd = connection_number; event_source->event_poll_fd.events = G_IO_IN; - event_sources = g_list_prepend (event_sources, event_source); - g_source_add_poll (source, &event_source->event_poll_fd); g_source_set_can_recurse (source, TRUE); - g_source_attach (source, NULL); -} -void -_clutter_backend_x11_events_uninit (ClutterBackend *backend) -{ - ClutterBackendX11 *backend_x11 = CLUTTER_BACKEND_X11 (backend); - - if (backend_x11->event_source) - { - CLUTTER_NOTE (EVENT, "Destroying the event source"); - - event_sources = g_list_remove (event_sources, - backend_x11->event_source); - - g_source_destroy (backend_x11->event_source); - g_source_unref (backend_x11->event_source); - backend_x11->event_source = NULL; - } -} - -static void -events_queue (ClutterBackend *backend) -{ - ClutterBackendX11 *backend_x11 = CLUTTER_BACKEND_X11 (backend); - Display *xdisplay = backend_x11->xdpy; - ClutterEvent *event; - XEvent xevent; - - while (!clutter_events_pending () && XPending (xdisplay)) - { - XNextEvent (xdisplay, &xevent); - - event = clutter_event_new (CLUTTER_NOTHING); - -#ifdef HAVE_XGE - XGetEventData (xdisplay, &xevent.xcookie); -#endif - - if (_clutter_backend_translate_event (backend, &xevent, event)) - _clutter_event_push (event, FALSE); - else - clutter_event_free (event); - -#ifdef HAVE_XGE - XFreeEventData (xdisplay, &xevent.xcookie); -#endif - } + return source; } /** @@ -357,13 +239,13 @@ static gboolean clutter_event_prepare (GSource *source, gint *timeout) { - ClutterBackend *backend = ((ClutterEventSource *) source)->backend; + ClutterBackendX11 *backend = ((ClutterEventSource *) source)->backend; gboolean retval; clutter_threads_enter (); *timeout = -1; - retval = (clutter_events_pending () || check_xpending (backend)); + retval = (clutter_events_pending () || XPending (backend->xdpy)); clutter_threads_leave (); @@ -374,13 +256,13 @@ static gboolean clutter_event_check (GSource *source) { ClutterEventSource *event_source = (ClutterEventSource *) source; - ClutterBackend *backend = event_source->backend; + ClutterBackendX11 *backend = event_source->backend; gboolean retval; clutter_threads_enter (); if (event_source->event_poll_fd.revents & G_IO_IN) - retval = (clutter_events_pending () || check_xpending (backend)); + retval = (clutter_events_pending () || XPending (backend->xdpy)); else retval = FALSE; @@ -389,12 +271,41 @@ clutter_event_check (GSource *source) return retval; } +static void +events_queue (ClutterBackendX11 *backend_x11) +{ + ClutterBackend *backend = CLUTTER_BACKEND (backend_x11); + Display *xdisplay = backend_x11->xdpy; + ClutterEvent *event; + XEvent xevent; + + while (!clutter_events_pending () && XPending (xdisplay)) + { + XNextEvent (xdisplay, &xevent); + + event = clutter_event_new (CLUTTER_NOTHING); + +#ifdef HAVE_XGE + XGetEventData (xdisplay, &xevent.xcookie); +#endif + + if (_clutter_backend_translate_event (backend, &xevent, event)) + _clutter_event_push (event, FALSE); + else + clutter_event_free (event); + +#ifdef HAVE_XGE + XFreeEventData (xdisplay, &xevent.xcookie); +#endif + } +} + static gboolean clutter_event_dispatch (GSource *source, GSourceFunc callback, gpointer user_data) { - ClutterBackend *backend = ((ClutterEventSource *) source)->backend; + ClutterBackendX11 *backend = ((ClutterEventSource *) source)->backend; ClutterEvent *event; clutter_threads_enter (); diff --git a/configure.ac b/configure.ac index 0843dc1f9..ea38f4725 100644 --- a/configure.ac +++ b/configure.ac @@ -468,10 +468,12 @@ CLUTTER_CONFIG_DEFINES= # windowing systems AS_IF([test "x$SUPPORT_X11" = "x1"], [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES -#define CLUTTER_WINDOWING_X11 \"x11\""]) +#define CLUTTER_WINDOWING_X11 \"x11\" +#define CLUTTER_INPUT_X11 \"x11\""]) AS_IF([test "x$SUPPORT_GDK" = "x1"], [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES -#define CLUTTER_WINDOWING_GDK \"gdk\""]) +#define CLUTTER_WINDOWING_GDK \"gdk\" +#define CLUTTER_INPUT_GDK \"gdk\""]) AS_IF([test "x$SUPPORT_GLX" = "x1"], [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES #define CLUTTER_WINDOWING_GLX \"glx\""]) @@ -483,10 +485,12 @@ AS_IF([test "x$SUPPORT_WAYLAND" = "x1"], #define CLUTTER_WINDOWING_WAYLAND \"wayland\""]) AS_IF([test "x$SUPPORT_OSX" = "x1"], [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES -#define CLUTTER_WINDOWING_OSX \"osx\""]) +#define CLUTTER_WINDOWING_OSX \"osx\" +#define CLUTTER_INPUT_OSX \"osx\""]) AS_IF([test "x$SUPPORT_WIN32" = "x1"], [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES -#define CLUTTER_WINDOWING_WIN32 \"win32\""]) +#define CLUTTER_WINDOWING_WIN32 \"win32\" +#define CLUTTER_INPUT_WIN32 \"win32\""]) AS_IF([test "x$SUPPORT_EGL_PLATFORM_GDL" = "x1"], [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES #define CLUTTER_WINDOWING_CEX100 \"cex100\""]) From 1f8915d2c89cced191fbd94bdb5dd6833d942584 Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Thu, 3 Nov 2011 18:27:09 +0000 Subject: [PATCH 14/43] Add a 'null' input backend symbol We should have an input backend symbol that thoroughly disables all input event handling. --- clutter/clutter-backend.c | 8 +++++++- configure.ac | 4 ++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/clutter/clutter-backend.c b/clutter/clutter-backend.c index 4891bffa3..0eb065e0e 100644 --- a/clutter/clutter-backend.c +++ b/clutter/clutter-backend.c @@ -64,6 +64,9 @@ #ifdef CLUTTER_INPUT_OSX #include "osx/clutter-backend-osx.h" #endif +#ifdef CLUTTER_INPUT_GDK +#include "gdk/clutter-backend-gdk.h" +#endif #ifdef CLUTTER_INPUT_EVDEV #include "evdev/clutter-device-manager-evdev.h" #endif @@ -319,7 +322,10 @@ clutter_backend_real_init_events (ClutterBackend *backend) else #endif if (input_backend != NULL) - g_error ("Unrecognized input backend '%s'", input_backend); + { + if (input_backend != I_(CLUTTER_INPUT_NULL)) + g_error ("Unrecognized input backend '%s'", input_backend); + } else g_error ("Unknown input backend"); } diff --git a/configure.ac b/configure.ac index ea38f4725..ea1ad40c7 100644 --- a/configure.ac +++ b/configure.ac @@ -501,6 +501,10 @@ AS_IF([test "x$SUPPORT_TSLIB" = "x1"], [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES #define CLUTTER_INPUT_TSLIB \"tslib\""]) +# the 'null' input backend is special +CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES +#define CLUTTER_INPUT_NULL \"null\"" + AC_SUBST([CLUTTER_CONFIG_DEFINES]) dnl === Clutter substitutions kept for backwards compatibility ================ From 5b1b936491c89b75c211584e77946d3dea0c5f81 Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Fri, 4 Nov 2011 12:21:11 +0000 Subject: [PATCH 15/43] backend: Fix up the input backend detection ordering And add a missing 'else' in the OSX check, to avoid a g_error(). --- clutter/clutter-backend.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/clutter/clutter-backend.c b/clutter/clutter-backend.c index 0eb065e0e..39846e1c9 100644 --- a/clutter/clutter-backend.c +++ b/clutter/clutter-backend.c @@ -272,20 +272,13 @@ clutter_backend_real_init_events (ClutterBackend *backend) if (input_backend != NULL) input_backend = g_intern_string (input_backend); -#ifdef CLUTTER_INPUT_X11 - if (clutter_check_windowing_backend (CLUTTER_WINDOWING_X11) && - (input_backend == NULL || input_backend == I_(CLUTTER_INPUT_X11))) - { - _clutter_backend_x11_events_init (backend); - } - else -#endif #ifdef CLUTTER_INPUT_OSX if (clutter_check_windowing_backend (CLUTTER_WINDOWING_OSX) && (input_backend == NULL || input_backend == I_(CLUTTER_INPUT_OSX))) { _clutter_backend_osx_events_init (backend); } + else #endif #ifdef CLUTTER_INPUT_WIN32 if (clutter_check_windowing_backend (CLUTTER_WINDOWING_WIN32) && @@ -295,6 +288,14 @@ clutter_backend_real_init_events (ClutterBackend *backend) } else #endif +#ifdef CLUTTER_INPUT_X11 + if (clutter_check_windowing_backend (CLUTTER_WINDOWING_X11) && + (input_backend == NULL || input_backend == I_(CLUTTER_INPUT_X11))) + { + _clutter_backend_x11_events_init (backend); + } + else +#endif #ifdef CLUTTER_INPUT_GDK if (clutter_check_windowing_backend (CLUTTER_WINDOWING_GDK) && (input_backend == NULL || input_backend == I_(CLUTTER_INPUT_GDK))) From a918ac92cb2278a8ebbc118f55443e4974dd696f Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Fri, 4 Nov 2011 15:50:47 +0000 Subject: [PATCH 16/43] backend: Provide a default create_context() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Since we use Cogl for the context creation we can now provide a default context creation that should just work, plus a couple of hooks to allow plugging into the creation sequence for platforms supported by Cogl that require special handling — like foreign displays or alpha-enabled swap chains. The various backends have now two choices: either replace the create_context() in its entirety, or plug themselves into the default context creation. --- clutter/clutter-backend-private.h | 6 ++ clutter/clutter-backend.c | 114 +++++++++++++++++++++++++++++- 2 files changed, 117 insertions(+), 3 deletions(-) diff --git a/clutter/clutter-backend-private.h b/clutter/clutter-backend-private.h index 71b80a332..495aec351 100644 --- a/clutter/clutter-backend-private.h +++ b/clutter/clutter-backend-private.h @@ -68,6 +68,12 @@ struct _ClutterBackendClass ClutterFeatureFlags (* get_features) (ClutterBackend *backend); void (* redraw) (ClutterBackend *backend, ClutterStage *stage); + CoglRenderer * (* get_renderer) (ClutterBackend *backend, + GError **error); + CoglDisplay * (* get_display) (ClutterBackend *backend, + CoglRenderer *renderer, + CoglSwapChain *swap_chain, + GError **error); gboolean (* create_context) (ClutterBackend *backend, GError **error); void (* ensure_context) (ClutterBackend *backend, diff --git a/clutter/clutter-backend.c b/clutter/clutter-backend.c index 39846e1c9..d97718793 100644 --- a/clutter/clutter-backend.c +++ b/clutter/clutter-backend.c @@ -226,6 +226,115 @@ clutter_backend_real_font_changed (ClutterBackend *backend) CLUTTER_NOTE (BACKEND, "Units per em: %.2f", priv->units_per_em); } +static gboolean +clutter_backend_real_create_context (ClutterBackend *backend, + GError **error) +{ + ClutterBackendClass *klass; + CoglSwapChain *swap_chain; + GError *internal_error; + + if (backend->cogl_context != NULL) + return TRUE; + + klass = CLUTTER_BACKEND_GET_CLASS (backend); + + swap_chain = NULL; + internal_error = NULL; + + CLUTTER_NOTE (BACKEND, "Creating Cogl renderer"); + if (klass->get_renderer != NULL) + backend->cogl_renderer = klass->get_renderer (backend, &internal_error); + else + backend->cogl_renderer = cogl_renderer_new (); + + if (backend->cogl_renderer == NULL) + goto error; + + CLUTTER_NOTE (BACKEND, "Connecting the renderer"); + if (!cogl_renderer_connect (backend->cogl_renderer, &internal_error)) + goto error; + + CLUTTER_NOTE (BACKEND, "Creating Cogl swap chain"); + swap_chain = cogl_swap_chain_new (); + + CLUTTER_NOTE (BACKEND, "Creating Cogl display"); + if (klass->get_display != NULL) + { + backend->cogl_display = klass->get_display (backend, + backend->cogl_renderer, + swap_chain, + &internal_error); + } + else + { + CoglOnscreenTemplate *tmpl; + gboolean res; + + tmpl = cogl_onscreen_template_new (swap_chain); + + /* XXX: I have some doubts that this is a good design. + * + * Conceptually should we be able to check an onscreen_template + * without more details about the CoglDisplay configuration? + */ + res = cogl_renderer_check_onscreen_template (backend->cogl_renderer, + tmpl, + &internal_error); + + if (!res) + goto error; + + backend->cogl_display = cogl_display_new (backend->cogl_renderer, tmpl); + + /* the display owns the template */ + cogl_object_unref (tmpl); + } + + if (backend->cogl_display == NULL) + goto error; + + CLUTTER_NOTE (BACKEND, "Setting up the display"); + if (!cogl_display_setup (backend->cogl_display, &internal_error)) + goto error; + + CLUTTER_NOTE (BACKEND, "Creating the Cogl context"); + backend->cogl_context = cogl_context_new (backend->cogl_display, &internal_error); + if (backend->cogl_context == NULL) + goto error; + + /* the display owns the renderer and the swap chain */ + cogl_object_unref (backend->cogl_renderer); + cogl_object_unref (swap_chain); + + return TRUE; + +error: + if (backend->cogl_display != NULL) + { + cogl_object_unref (backend->cogl_display); + backend->cogl_display = NULL; + } + + if (backend->cogl_renderer != NULL) + { + cogl_object_unref (backend->cogl_renderer); + backend->cogl_renderer = NULL; + } + + if (swap_chain != NULL) + cogl_object_unref (swap_chain); + + if (internal_error != NULL) + g_propagate_error (error, internal_error); + else + g_set_error_literal (error, CLUTTER_INIT_ERROR, + CLUTTER_INIT_ERROR_BACKEND, + _("Unable to initialize the Clutter backend")); + + return FALSE; +} + static void clutter_backend_real_ensure_context (ClutterBackend *backend, ClutterStage *stage) @@ -429,6 +538,7 @@ clutter_backend_class_init (ClutterBackendClass *klass) klass->init_events = clutter_backend_real_init_events; klass->translate_event = clutter_backend_real_translate_event; + klass->create_context = clutter_backend_real_create_context; klass->ensure_context = clutter_backend_real_ensure_context; klass->redraw = clutter_backend_real_redraw; } @@ -546,10 +656,8 @@ _clutter_backend_create_context (ClutterBackend *backend, ClutterBackendClass *klass; klass = CLUTTER_BACKEND_GET_CLASS (backend); - if (klass->create_context) - return klass->create_context (backend, error); - return TRUE; + return klass->create_context (backend, error); } void From 68e8ef0103af438749660a0346267688b27b05c2 Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Fri, 4 Nov 2011 15:53:47 +0000 Subject: [PATCH 17/43] x11/backend: Use the context creation hooks Don't replace create_context(): given that the X11 backend already uses Cogl for the context creation, we can just provide the right data structures ourselves. --- clutter/x11/clutter-backend-x11.c | 115 ++++++++++++------------------ 1 file changed, 44 insertions(+), 71 deletions(-) diff --git a/clutter/x11/clutter-backend-x11.c b/clutter/x11/clutter-backend-x11.c index fa3c84deb..753eb0ccc 100644 --- a/clutter/x11/clutter-backend-x11.c +++ b/clutter/x11/clutter-backend-x11.c @@ -695,40 +695,46 @@ clutter_backend_x11_translate_event (ClutterBackend *backend, return parent_class->translate_event (backend, native, event); } -static gboolean -clutter_backend_x11_create_context (ClutterBackend *backend, - GError **error) +static CoglRenderer * +clutter_backend_x11_get_renderer (ClutterBackend *backend, + GError **error) { ClutterBackendX11 *backend_x11 = CLUTTER_BACKEND_X11 (backend); - CoglOnscreenTemplate *onscreen_template = NULL; - CoglSwapChain *swap_chain = NULL; + Display *xdisplay = backend_x11->xdpy; + CoglRenderer *renderer; + + CLUTTER_NOTE (BACKEND, "Creating a new Xlib renderer"); + + renderer = cogl_renderer_new (); + + /* set the display object we're using */ + cogl_xlib_renderer_set_foreign_display (renderer, xdisplay); + + return renderer; +} + +static CoglDisplay * +clutter_backend_x11_get_display (ClutterBackend *backend, + CoglRenderer *renderer, + CoglSwapChain *swap_chain, + GError **error) +{ + CoglOnscreenTemplate *onscreen_template; GError *internal_error = NULL; - gboolean status; + CoglDisplay *display; + gboolean res; - if (backend->cogl_context != NULL) - return TRUE; + CLUTTER_NOTE (BACKEND, "Alpha on Cogl swap chain: %s", + clutter_enable_argb ? "enabled" : "disabled"); - backend->cogl_renderer = cogl_renderer_new (); - cogl_xlib_renderer_set_foreign_display (backend->cogl_renderer, - backend_x11->xdpy); - if (!cogl_renderer_connect (backend->cogl_renderer, &internal_error)) - goto error; - - swap_chain = cogl_swap_chain_new (); cogl_swap_chain_set_has_alpha (swap_chain, clutter_enable_argb); onscreen_template = cogl_onscreen_template_new (swap_chain); - cogl_object_unref (swap_chain); - /* XXX: I have some doubts that this is a good design. - * - * Conceptually should we be able to check an onscreen_template - * without more details about the CoglDisplay configuration? - */ - status = cogl_renderer_check_onscreen_template (backend->cogl_renderer, - onscreen_template, - &internal_error); - if (!status && clutter_enable_argb) + res = cogl_renderer_check_onscreen_template (renderer, + onscreen_template, + &internal_error); + if (!res && clutter_enable_argb) { CLUTTER_NOTE (BACKEND, "Creation of a context with a ARGB visual failed: %s", @@ -746,61 +752,27 @@ clutter_backend_x11_create_context (ClutterBackend *backend, */ clutter_enable_argb = FALSE; cogl_swap_chain_set_has_alpha (swap_chain, FALSE); - status = cogl_renderer_check_onscreen_template (backend->cogl_renderer, - onscreen_template, - &internal_error); + res = cogl_renderer_check_onscreen_template (renderer, + onscreen_template, + &internal_error); } - if (!status) - goto error; - - backend->cogl_display = cogl_display_new (backend->cogl_renderer, - onscreen_template); - - cogl_object_unref (backend->cogl_renderer); - cogl_object_unref (onscreen_template); - - if (!cogl_display_setup (backend->cogl_display, &internal_error)) - goto error; - - backend->cogl_context = cogl_context_new (backend->cogl_display, - &internal_error); - if (backend->cogl_context == NULL) - goto error; - - return TRUE; - -error: - if (internal_error != NULL) + if (!res) { - CLUTTER_NOTE (BACKEND, "Backend creation failed: %s", - internal_error->message); - g_set_error_literal (error, CLUTTER_INIT_ERROR, CLUTTER_INIT_ERROR_BACKEND, internal_error->message); + g_error_free (internal_error); + cogl_object_unref (onscreen_template); + + return NULL; } - if (backend->cogl_display != NULL) - { - cogl_object_unref (backend->cogl_display); - backend->cogl_display = NULL; - } + display = cogl_display_new (renderer, onscreen_template); + cogl_object_unref (onscreen_template); - if (onscreen_template != NULL) - cogl_object_unref (onscreen_template); - - if (swap_chain != NULL) - cogl_object_unref (swap_chain); - - if (backend->cogl_renderer != NULL) - { - cogl_object_unref (backend->cogl_renderer); - backend->cogl_renderer = NULL; - } - - return FALSE; + return display; } static ClutterStageWindow * @@ -846,7 +818,8 @@ clutter_backend_x11_class_init (ClutterBackendX11Class *klass) backend_class->copy_event_data = clutter_backend_x11_copy_event_data; backend_class->free_event_data = clutter_backend_x11_free_event_data; backend_class->translate_event = clutter_backend_x11_translate_event; - backend_class->create_context = clutter_backend_x11_create_context; + backend_class->get_renderer = clutter_backend_x11_get_renderer; + backend_class->get_display = clutter_backend_x11_get_display; backend_class->create_stage = clutter_backend_x11_create_stage; } From 6ec7a28802999b24f1d07dfb73a8a4e670596a42 Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Fri, 4 Nov 2011 15:54:58 +0000 Subject: [PATCH 18/43] gdk/backend: Use the context creation hooks Same as it has happened to the X11 backend. --- clutter/gdk/clutter-backend-gdk.c | 132 ++++++++++++++++-------------- 1 file changed, 71 insertions(+), 61 deletions(-) diff --git a/clutter/gdk/clutter-backend-gdk.c b/clutter/gdk/clutter-backend-gdk.c index ea4f0f771..af59c244e 100644 --- a/clutter/gdk/clutter-backend-gdk.c +++ b/clutter/gdk/clutter-backend-gdk.c @@ -264,25 +264,19 @@ clutter_backend_gdk_get_device_manager (ClutterBackend *backend) return backend_gdk->device_manager; } -static gboolean -clutter_backend_gdk_create_context (ClutterBackend *backend, - GError **error) +static CoglRenderer * +clutter_backend_gdk_get_renderer (ClutterBackend *backend, + GError **error) { ClutterBackendGdk *backend_gdk = CLUTTER_BACKEND_GDK (backend); - CoglSwapChain *swap_chain = NULL; - CoglOnscreenTemplate *onscreen_template = NULL; - GdkVisual *rgba_visual = NULL; - - if (backend->cogl_context != NULL) - return TRUE; - - backend->cogl_renderer = cogl_renderer_new (); + CoglRenderer *renderer = cogl_renderer_new (); #if defined(GDK_WINDOWING_X11) && defined(COGL_HAS_XLIB_SUPPORT) if (GDK_IS_X11_DISPLAY (backend_gdk->display)) { - cogl_xlib_renderer_set_foreign_display (backend->cogl_renderer, - gdk_x11_display_get_xdisplay (backend_gdk->display)); + Display *xdisplay = gdk_x11_display_get_xdisplay (backend_gdk->display); + + cogl_xlib_renderer_set_foreign_display (renderer, xdisplay); } else #endif @@ -297,65 +291,79 @@ clutter_backend_gdk_create_context (ClutterBackend *backend, { g_set_error (error, CLUTTER_INIT_ERROR, CLUTTER_INIT_ERROR_BACKEND, - "Could not find a suitable CoglWinsys for" - "a GdkDisplay of type %s", G_OBJECT_TYPE_NAME (backend_gdk->display)); - goto error; + _("Could not find a suitable CoglWinsys for a GdkDisplay of type %s"), + G_OBJECT_TYPE_NAME (backend_gdk->display)); + cogl_object_unref (renderer); + + return NULL; } + return renderer; +} - if (!cogl_renderer_connect (backend->cogl_renderer, error)) - goto error; +static CoglDisplay * +clutter_backend_gdk_get_display (ClutterBackend *backend, + CoglRenderer *renderer, + CoglSwapChain *swap_chain, + GError **error) +{ + ClutterBackendGdk *backend_gdk = CLUTTER_BACKEND_GDK (backend); + CoglOnscreenTemplate *onscreen_template; + GError *internal_error = NULL; + CoglDisplay *display; + gboolean has_rgba_visual; + gboolean res; - swap_chain = cogl_swap_chain_new (); + has_rgba_visual = gdk_screen_get_rgba_visual (backend_gdk->screen) == NULL; - rgba_visual = gdk_screen_get_rgba_visual (backend_gdk->screen); - cogl_swap_chain_set_has_alpha (swap_chain, rgba_visual != NULL); + CLUTTER_NOTE (BACKEND, "Alpha on Cogl swap chain: %s", + has_rgba_visual ? "enabled" : "disabled"); + + cogl_swap_chain_set_has_alpha (swap_chain, has_rgba_visual); onscreen_template = cogl_onscreen_template_new (swap_chain); - cogl_object_unref (swap_chain); - /* XXX: I have some doubts that this is a good design. - * Conceptually should we be able to check an onscreen_template - * without more details about the CoglDisplay configuration? - */ - if (!cogl_renderer_check_onscreen_template (backend->cogl_renderer, - onscreen_template, - error)) - goto error; + res = cogl_renderer_check_onscreen_template (renderer, + onscreen_template, + &internal_error); + if (!res && has_rgba_visual) + { + CLUTTER_NOTE (BACKEND, + "Creation of a context with a ARGB visual failed: %s", + internal_error != NULL ? internal_error->message + : "Unknown reason"); - backend->cogl_display = cogl_display_new (backend->cogl_renderer, - onscreen_template); + g_clear_error (&internal_error); - cogl_object_unref (backend->cogl_renderer); + /* It's possible that the current renderer doesn't support transparency + * in a swap_chain so lets see if we can fallback to not having any + * transparency... + * + * XXX: It might be nice to have a CoglRenderer feature we could + * explicitly check for ahead of time. + */ + cogl_swap_chain_set_has_alpha (swap_chain, FALSE); + res = cogl_renderer_check_onscreen_template (renderer, + onscreen_template, + &internal_error); + } + + if (!res) + { + g_set_error_literal (error, CLUTTER_INIT_ERROR, + CLUTTER_INIT_ERROR_BACKEND, + internal_error->message); + + g_error_free (internal_error); + cogl_object_unref (onscreen_template); + + return NULL; + } + + display = cogl_display_new (renderer, onscreen_template); cogl_object_unref (onscreen_template); - if (!cogl_display_setup (backend->cogl_display, error)) - goto error; - - backend->cogl_context = cogl_context_new (backend->cogl_display, error); - if (backend->cogl_context == NULL) - goto error; - - return TRUE; - -error: - if (backend->cogl_display != NULL) - { - cogl_object_unref (backend->cogl_display); - backend->cogl_display = NULL; - } - - if (onscreen_template != NULL) - cogl_object_unref (onscreen_template); - if (swap_chain != NULL) - cogl_object_unref (swap_chain); - - if (backend->cogl_renderer != NULL) - { - cogl_object_unref (backend->cogl_renderer); - backend->cogl_renderer = NULL; - } - return FALSE; + return display; } static ClutterStageWindow * @@ -383,7 +391,9 @@ clutter_backend_gdk_class_init (ClutterBackendGdkClass *klass) backend_class->get_device_manager = clutter_backend_gdk_get_device_manager; backend_class->copy_event_data = clutter_backend_gdk_copy_event_data; backend_class->free_event_data = clutter_backend_gdk_free_event_data; - backend_class->create_context = clutter_backend_gdk_create_context; + + backend_class->get_renderer = clutter_backend_gdk_get_renderer; + backend_class->get_display = clutter_backend_gdk_get_display; backend_class->create_stage = clutter_backend_gdk_create_stage; } From b97324ee9f8684a0388cacc2e00ea1a2da16e5cc Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Fri, 4 Nov 2011 15:57:01 +0000 Subject: [PATCH 19/43] win32/backend: Use the default context creation The win32 backend doesn't do anything special on context creation, so we can just use the default implementation provided by ClutterBackend. --- clutter/win32/clutter-backend-win32.c | 59 --------------------------- 1 file changed, 59 deletions(-) diff --git a/clutter/win32/clutter-backend-win32.c b/clutter/win32/clutter-backend-win32.c index 044477341..f403a47c0 100644 --- a/clutter/win32/clutter-backend-win32.c +++ b/clutter/win32/clutter-backend-win32.c @@ -213,64 +213,6 @@ clutter_backend_win32_get_features (ClutterBackend *backend) return flags; } -static gboolean -clutter_backend_win32_create_context (ClutterBackend *backend, - GError **error) -{ - CoglSwapChain *swap_chain; - CoglOnscreenTemplate *onscreen_template; - - if (backend->cogl_context) - return TRUE; - - backend->cogl_renderer = cogl_renderer_new (); - if (!cogl_renderer_connect (backend->cogl_renderer, error)) - goto error; - - swap_chain = cogl_swap_chain_new (); - - onscreen_template = cogl_onscreen_template_new (swap_chain); - cogl_object_unref (swap_chain); - - if (!cogl_renderer_check_onscreen_template (backend->cogl_renderer, - onscreen_template, - error)) - goto error; - - backend->cogl_display = cogl_display_new (backend->cogl_renderer, - onscreen_template); - cogl_object_unref (backend->cogl_renderer); - cogl_object_unref (onscreen_template); - - if (!cogl_display_setup (backend->cogl_display, error)) - goto error; - - backend->cogl_context = cogl_context_new (backend->cogl_display, error); - if (!backend->cogl_context) - goto error; - - return TRUE; - -error: - if (backend->cogl_display) - { - cogl_object_unref (backend->cogl_display); - backend->cogl_display = NULL; - } - - if (onscreen_template) - cogl_object_unref (onscreen_template); - if (swap_chain) - cogl_object_unref (swap_chain); - - if (backend->cogl_renderer) - { - cogl_object_unref (backend->cogl_renderer); - backend->cogl_renderer = NULL; - } - return FALSE; -} - static ClutterStageWindow * clutter_backend_win32_create_stage (ClutterBackend *backend, ClutterStage *wrapper, @@ -344,7 +286,6 @@ clutter_backend_win32_class_init (ClutterBackendWin32Class *klass) backend_class->create_stage = clutter_backend_win32_create_stage; backend_class->add_options = clutter_backend_win32_add_options; backend_class->get_features = clutter_backend_win32_get_features; - backend_class->create_context = clutter_backend_win32_create_context; backend_class->get_device_manager = clutter_backend_win32_get_device_manager; } From 80fdbeb9543e0de18ac28f8cae28c42f2e18942e Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Fri, 4 Nov 2011 16:13:04 +0000 Subject: [PATCH 20/43] backend: Provide a default get_features() implementation Continue gutting ClutterBackendCogl; get_features() is the last bit that still does something, but now we can use the Cogl API. --- clutter/clutter-backend.c | 34 ++++++++++++++++++++++ clutter/cogl/clutter-backend-cogl.c | 41 --------------------------- clutter/cogl/clutter-stage-cogl.c | 15 +++++----- clutter/gdk/clutter-backend-gdk.c | 8 ++++-- clutter/win32/clutter-backend-win32.c | 28 ++---------------- 5 files changed, 49 insertions(+), 77 deletions(-) diff --git a/clutter/clutter-backend.c b/clutter/clutter-backend.c index d97718793..de7ece385 100644 --- a/clutter/clutter-backend.c +++ b/clutter/clutter-backend.c @@ -356,6 +356,39 @@ clutter_backend_real_ensure_context (ClutterBackend *backend, cogl_set_framebuffer (framebuffer); } +static ClutterFeatureFlags +clutter_backend_real_get_features (ClutterBackend *backend) +{ + ClutterFeatureFlags flags = 0; + + if (cogl_clutter_winsys_has_feature (COGL_WINSYS_FEATURE_MULTIPLE_ONSCREEN)) + { + CLUTTER_NOTE (BACKEND, "Cogl supports multiple onscreen framebuffers"); + flags |= CLUTTER_FEATURE_STAGE_MULTIPLE; + } + else + { + CLUTTER_NOTE (BACKEND, "Cogl only supports one onscreen framebuffer"); + flags |= CLUTTER_FEATURE_STAGE_STATIC; + } + + if (cogl_clutter_winsys_has_feature (COGL_WINSYS_FEATURE_SWAP_THROTTLE)) + { + CLUTTER_NOTE (BACKEND, "Cogl supports swap buffers throttling"); + flags |= CLUTTER_FEATURE_SYNC_TO_VBLANK; + } + else + CLUTTER_NOTE (BACKEND, "Cogl doesn't support swap buffers throttling"); + + if (cogl_clutter_winsys_has_feature (COGL_WINSYS_FEATURE_SWAP_BUFFERS_EVENT)) + { + CLUTTER_NOTE (BACKEND, "Cogl supports swap buffers complete events"); + flags |= CLUTTER_FEATURE_SWAP_EVENTS; + } + + return flags; +} + static void clutter_backend_real_redraw (ClutterBackend *backend, ClutterStage *stage) @@ -540,6 +573,7 @@ clutter_backend_class_init (ClutterBackendClass *klass) klass->translate_event = clutter_backend_real_translate_event; klass->create_context = clutter_backend_real_create_context; klass->ensure_context = clutter_backend_real_ensure_context; + klass->get_features = clutter_backend_real_get_features; klass->redraw = clutter_backend_real_redraw; } diff --git a/clutter/cogl/clutter-backend-cogl.c b/clutter/cogl/clutter-backend-cogl.c index b5b8d9e0a..1e033838b 100644 --- a/clutter/cogl/clutter-backend-cogl.c +++ b/clutter/cogl/clutter-backend-cogl.c @@ -129,46 +129,6 @@ clutter_backend_cogl_constructor (GType gtype, return g_object_ref (backend_singleton); } -static ClutterFeatureFlags -clutter_backend_cogl_get_features (ClutterBackend *backend) -{ - ClutterBackendCogl *backend_cogl = CLUTTER_BACKEND_COGL (backend); - ClutterFeatureFlags flags = 0; - - if (cogl_clutter_winsys_has_feature (COGL_WINSYS_FEATURE_MULTIPLE_ONSCREEN)) - { - CLUTTER_NOTE (BACKEND, "Cogl supports multiple onscreen framebuffers"); - flags |= CLUTTER_FEATURE_STAGE_MULTIPLE; - } - else - { - CLUTTER_NOTE (BACKEND, "Cogl only supports one onscreen framebuffer"); - flags |= CLUTTER_FEATURE_STAGE_STATIC; - } - - if (cogl_clutter_winsys_has_feature (COGL_WINSYS_FEATURE_SWAP_THROTTLE)) - { - CLUTTER_NOTE (BACKEND, "Cogl supports swap buffers throttling"); - flags |= CLUTTER_FEATURE_SYNC_TO_VBLANK; - } - else - CLUTTER_NOTE (BACKEND, "Cogl doesn't support swap buffers throttling"); - - if (cogl_clutter_winsys_has_feature (COGL_WINSYS_FEATURE_SWAP_BUFFERS_EVENT)) - { - CLUTTER_NOTE (BACKEND, "Cogl supports swap buffers complete events"); - flags |= CLUTTER_FEATURE_SWAP_EVENTS; - } - - if (cogl_clutter_winsys_has_feature (COGL_WINSYS_FEATURE_SWAP_REGION)) - { - CLUTTER_NOTE (BACKEND, "Cogl supports swapping buffer regions"); - backend_cogl->can_blit_sub_buffer = TRUE; - } - - return flags; -} - static void _clutter_backend_cogl_class_init (ClutterBackendCoglClass *klass) { @@ -181,7 +141,6 @@ _clutter_backend_cogl_class_init (ClutterBackendCoglClass *klass) backend_class->pre_parse = clutter_backend_cogl_pre_parse; backend_class->post_parse = clutter_backend_cogl_post_parse; - backend_class->get_features = clutter_backend_cogl_get_features; } static void diff --git a/clutter/cogl/clutter-stage-cogl.c b/clutter/cogl/clutter-stage-cogl.c index 80801443f..84b2022b5 100644 --- a/clutter/cogl/clutter-stage-cogl.c +++ b/clutter/cogl/clutter-stage-cogl.c @@ -316,11 +316,10 @@ static void clutter_stage_cogl_redraw (ClutterStageWindow *stage_window) { ClutterStageCogl *stage_cogl = CLUTTER_STAGE_COGL (stage_window); - ClutterActor *wrapper; - ClutterBackend *backend; - ClutterBackendCogl *backend_cogl; gboolean may_use_clipped_redraw; gboolean use_clipped_redraw; + gboolean can_blit_sub_buffer; + ClutterActor *wrapper; CLUTTER_STATIC_TIMER (painting_timer, "Redrawing", /* parent */ @@ -343,19 +342,19 @@ clutter_stage_cogl_redraw (ClutterStageWindow *stage_window) if (!stage_cogl->onscreen) return; - backend = clutter_get_default_backend (); - backend_cogl = CLUTTER_BACKEND_COGL (backend); - CLUTTER_TIMER_START (_clutter_uprof_context, painting_timer); + can_blit_sub_buffer = + cogl_clutter_winsys_has_feature (COGL_WINSYS_FEATURE_SWAP_REGION); + may_use_clipped_redraw = FALSE; if (_clutter_stage_window_can_clip_redraws (stage_window) && - G_LIKELY (backend_cogl->can_blit_sub_buffer) && + can_blit_sub_buffer && /* NB: a zero width redraw clip == full stage redraw */ stage_cogl->bounding_redraw_clip.width != 0 && /* some drivers struggle to get going and produce some junk * frames when starting up... */ - G_LIKELY (stage_cogl->frame_count > 3)) + stage_cogl->frame_count > 3) { may_use_clipped_redraw = TRUE; } diff --git a/clutter/gdk/clutter-backend-gdk.c b/clutter/gdk/clutter-backend-gdk.c index af59c244e..dedef89f0 100644 --- a/clutter/gdk/clutter-backend-gdk.c +++ b/clutter/gdk/clutter-backend-gdk.c @@ -218,11 +218,13 @@ clutter_backend_gdk_dispose (GObject *gobject) static ClutterFeatureFlags clutter_backend_gdk_get_features (ClutterBackend *backend) { - ClutterFeatureFlags flags = CLUTTER_FEATURE_STAGE_USER_RESIZE | CLUTTER_FEATURE_STAGE_CURSOR; + ClutterBackendClass *parent_class; - flags |= CLUTTER_BACKEND_CLASS (clutter_backend_gdk_parent_class)->get_features (backend); + parent_class = CLUTTER_BACKEND_CLASS (clutter_backend_gdk_parent_class); - return flags; + return parent_class->get_features (backend) + | CLUTTER_FEATURE_STAGE_USER_RESIZE + | CLUTTER_FEATURE_STAGE_CURSOR; } static void diff --git a/clutter/win32/clutter-backend-win32.c b/clutter/win32/clutter-backend-win32.c index f403a47c0..3d9a2d2db 100644 --- a/clutter/win32/clutter-backend-win32.c +++ b/clutter/win32/clutter-backend-win32.c @@ -183,34 +183,12 @@ ClutterFeatureFlags clutter_backend_win32_get_features (ClutterBackend *backend) { ClutterBackendClass *parent_class; - ClutterFeatureFlags flags; parent_class = CLUTTER_BACKEND_CLASS (clutter_backend_win32_parent_class); - flags = CLUTTER_FEATURE_STAGE_USER_RESIZE | CLUTTER_FEATURE_STAGE_CURSOR; - - if (cogl_clutter_winsys_has_feature (COGL_WINSYS_FEATURE_MULTIPLE_ONSCREEN)) - { - CLUTTER_NOTE (BACKEND, "Cogl supports multiple onscreen framebuffers"); - flags |= CLUTTER_FEATURE_STAGE_MULTIPLE; - } - else - { - CLUTTER_NOTE (BACKEND, "Cogl only supports one onscreen framebuffer"); - flags |= CLUTTER_FEATURE_STAGE_STATIC; - } - - if (cogl_clutter_winsys_has_feature (COGL_WINSYS_FEATURE_SWAP_THROTTLE)) - { - CLUTTER_NOTE (BACKEND, "Cogl supports swap buffers throttling"); - flags |= CLUTTER_FEATURE_SYNC_TO_VBLANK; - } - else - CLUTTER_NOTE (BACKEND, "Cogl doesn't support swap buffers throttling"); - - CLUTTER_NOTE (BACKEND, "backend features checked"); - - return flags; + return parent_class->get_features (backend) + | CLUTTER_FEATURE_STAGE_USER_RESIZE + | CLUTTER_FEATURE_STAGE_CURSOR; } static ClutterStageWindow * From e8562089f692f5fa8bbf8c646d3c508244fd3d14 Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Fri, 4 Nov 2011 16:35:38 +0000 Subject: [PATCH 21/43] main: Add a sync-to-vblank global flag It replaces the per-backend CLUTTER_VBLANK environment variable. --- clutter/clutter-main.c | 21 +++++++++++++++++++++ clutter/clutter-private.h | 2 ++ 2 files changed, 23 insertions(+) diff --git a/clutter/clutter-main.c b/clutter/clutter-main.c index 503a6b04e..ca4663319 100644 --- a/clutter/clutter-main.c +++ b/clutter/clutter-main.c @@ -155,6 +155,7 @@ static gboolean clutter_fatal_warnings = FALSE; static gboolean clutter_disable_mipmap_text = FALSE; static gboolean clutter_use_fuzzy_picking = FALSE; static gboolean clutter_enable_accessibility = TRUE; +static gboolean clutter_sync_to_vblank = TRUE; static guint clutter_default_fps = 60; @@ -302,6 +303,16 @@ clutter_config_read_from_key_file (GKeyFile *keyfile) else clutter_enable_accessibility = bool_value; + bool_value = + g_key_file_get_boolean (keyfile, ENVIRONMENT_GROUP, + "SyncToVblank", + &key_error); + + if (key_error != NULL) + g_clear_error (&key_error); + else + clutter_sync_to_vblank = bool_value; + int_value = g_key_file_get_integer (keyfile, ENVIRONMENT_GROUP, "DefaultFps", @@ -1725,6 +1736,10 @@ pre_parse_hook (GOptionContext *context, if (env_string) clutter_use_fuzzy_picking = TRUE; + env_string = g_getenv ("CLUTTER_VBLANK"); + if (g_strcmp0 (env_string, "none") == 0) + clutter_sync_to_vblank = FALSE; + return _clutter_backend_pre_parse (backend, error); } @@ -3699,3 +3714,9 @@ clutter_check_windowing_backend (const char *backend_type) #endif return FALSE; } + +gboolean +_clutter_get_sync_to_vblank (void) +{ + return clutter_sync_to_vblank; +} diff --git a/clutter/clutter-private.h b/clutter/clutter-private.h index eff0b31b8..017d54e7a 100644 --- a/clutter/clutter-private.h +++ b/clutter/clutter-private.h @@ -211,6 +211,8 @@ void _clutter_id_to_color (guint id, ClutterActor * _clutter_get_actor_by_id (ClutterStage *stage, guint32 actor_id); +gboolean _clutter_get_sync_to_vblank (void); + /* use this function as the accumulator if you have a signal with * a G_TYPE_BOOLEAN return value; this will stop the emission as * soon as one handler returns TRUE From db211a2131eed46bcecf8abc14822f2bd9a50812 Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Fri, 4 Nov 2011 16:39:52 +0000 Subject: [PATCH 22/43] Remove per-backend CLUTTER_VBLANK envvar We have a global flag we can use. --- clutter/cogl/clutter-backend-cogl.h | 2 -- clutter/cogl/clutter-stage-cogl.c | 6 ++---- clutter/win32/clutter-backend-win32.c | 24 ------------------------ clutter/win32/clutter-backend-win32.h | 2 -- clutter/win32/clutter-stage-win32.c | 6 ++---- clutter/x11/clutter-backend-x11.c | 6 ++---- 6 files changed, 6 insertions(+), 40 deletions(-) diff --git a/clutter/cogl/clutter-backend-cogl.h b/clutter/cogl/clutter-backend-cogl.h index 2467d9d9e..483b6cec9 100644 --- a/clutter/cogl/clutter-backend-cogl.h +++ b/clutter/cogl/clutter-backend-cogl.h @@ -63,8 +63,6 @@ struct _ClutterBackendCoglClass GType _clutter_backend_cogl_get_type (void) G_GNUC_CONST; -const gchar *_clutter_backend_cogl_get_vblank (void); - G_END_DECLS #endif /* __CLUTTER_BACKEND_COGL_H__ */ diff --git a/clutter/cogl/clutter-stage-cogl.c b/clutter/cogl/clutter-stage-cogl.c index 84b2022b5..fe600c056 100644 --- a/clutter/cogl/clutter-stage-cogl.c +++ b/clutter/cogl/clutter-stage-cogl.c @@ -102,7 +102,6 @@ clutter_stage_cogl_realize (ClutterStageWindow *stage_window) GError *error = NULL; gfloat width = 800; gfloat height = 600; - const char *clutter_vblank; CLUTTER_NOTE (BACKEND, "Realizing stage '%s' [%p]", G_OBJECT_TYPE_NAME (stage_cogl), @@ -116,9 +115,8 @@ clutter_stage_cogl_realize (ClutterStageWindow *stage_window) width, height); } - clutter_vblank = _clutter_backend_cogl_get_vblank (); - if (clutter_vblank && strcmp (clutter_vblank, "none") == 0) - cogl_onscreen_set_swap_throttled (stage_cogl->onscreen, FALSE); + cogl_onscreen_set_swap_throttled (stage_cogl->onscreen, + _clutter_get_sync_to_vblank ()); framebuffer = COGL_FRAMEBUFFER (stage_cogl->onscreen); if (!cogl_framebuffer_allocate (framebuffer, &error)) diff --git a/clutter/win32/clutter-backend-win32.c b/clutter/win32/clutter-backend-win32.c index 3d9a2d2db..4d5165a13 100644 --- a/clutter/win32/clutter-backend-win32.c +++ b/clutter/win32/clutter-backend-win32.c @@ -47,34 +47,11 @@ typedef int (WINAPI * SwapIntervalProc) (int interval); /* singleton object */ static ClutterBackendWin32 *backend_singleton = NULL; -static gchar *clutter_vblank_name = NULL; - static HINSTANCE clutter_hinst = NULL; /* various flags corresponding to pre init setup calls */ static gboolean _no_event_retrieval = FALSE; -const gchar * -_clutter_backend_win32_get_vblank (void) -{ - if (clutter_vblank_name && strcmp (clutter_vblank_name, "0") == 0) - return "none"; - else - return clutter_vblank_name; -} - -gboolean -clutter_backend_win32_pre_parse (ClutterBackend *backend, - GError **error) -{ - const gchar *env_string; - - if ((env_string = g_getenv ("CLUTTER_VBLANK"))) - clutter_vblank_name = g_strdup (env_string); - - return TRUE; -} - static void clutter_backend_win32_init_events (ClutterBackend *backend) { @@ -259,7 +236,6 @@ clutter_backend_win32_class_init (ClutterBackendWin32Class *klass) gobject_class->dispose = clutter_backend_win32_dispose; gobject_class->finalize = clutter_backend_win32_finalize; - backend_class->pre_parse = clutter_backend_win32_pre_parse; backend_class->init_events = clutter_backend_win32_init_events; backend_class->create_stage = clutter_backend_win32_create_stage; backend_class->add_options = clutter_backend_win32_add_options; diff --git a/clutter/win32/clutter-backend-win32.h b/clutter/win32/clutter-backend-win32.h index 2bd365b74..da5ac9c17 100644 --- a/clutter/win32/clutter-backend-win32.h +++ b/clutter/win32/clutter-backend-win32.h @@ -72,8 +72,6 @@ clutter_backend_win32_get_features (ClutterBackend *backend); HCURSOR _clutter_backend_win32_get_invisible_cursor (ClutterBackend *backend); -const gchar *_clutter_backend_win32_get_vblank (void); - G_END_DECLS #endif /* __CLUTTER_BACKEND_WIN32_H__ */ diff --git a/clutter/win32/clutter-stage-win32.c b/clutter/win32/clutter-stage-win32.c index d2b2cb55a..f57f73be6 100644 --- a/clutter/win32/clutter-stage-win32.c +++ b/clutter/win32/clutter-stage-win32.c @@ -398,7 +398,6 @@ clutter_stage_win32_realize (ClutterStageWindow *stage_window) gfloat width; gfloat height; GError *error = NULL; - const char *clutter_vblank; CLUTTER_NOTE (MISC, "Realizing main stage"); @@ -470,9 +469,8 @@ clutter_stage_win32_realize (ClutterStageWindow *stage_window) cogl_win32_onscreen_set_foreign_window (stage_win32->onscreen, stage_win32->hwnd); - clutter_vblank = _clutter_backend_win32_get_vblank (); - if (clutter_vblank && strcmp (clutter_vblank, "none") == 0) - cogl_onscreen_set_swap_throttled (stage_win32->onscreen, FALSE); + cogl_onscreen_set_swap_throttled (stage_win32->onscreen, + _clutter_get_sync_to_vblank ()); framebuffer = COGL_FRAMEBUFFER (stage_win32->onscreen); if (!cogl_framebuffer_allocate (framebuffer, &error)) diff --git a/clutter/x11/clutter-backend-x11.c b/clutter/x11/clutter-backend-x11.c index 753eb0ccc..8b5a519a7 100644 --- a/clutter/x11/clutter-backend-x11.c +++ b/clutter/x11/clutter-backend-x11.c @@ -331,8 +331,7 @@ _clutter_backend_x11_pre_parse (ClutterBackend *backend, env_string = NULL; } - return CLUTTER_BACKEND_CLASS (clutter_backend_x11_parent_class)->pre_parse (backend, - error); + return TRUE; } gboolean @@ -451,8 +450,7 @@ _clutter_backend_x11_post_parse (ClutterBackend *backend, (unsigned int) backend_x11->xwin_root, clutter_backend_get_resolution (backend)); - return CLUTTER_BACKEND_CLASS (clutter_backend_x11_parent_class)->post_parse (backend, - error); + return TRUE; } void From 5ac0cf1c2852b0ad1cb58edc254bb787c6354e3c Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Fri, 4 Nov 2011 16:41:52 +0000 Subject: [PATCH 23/43] cogl/backend: Remove pre/post_parse The CLUTTER_VBLANK environment variable is now handled in the common code path. --- clutter/cogl/clutter-backend-cogl.c | 38 ----------------------------- 1 file changed, 38 deletions(-) diff --git a/clutter/cogl/clutter-backend-cogl.c b/clutter/cogl/clutter-backend-cogl.c index 1e033838b..31d0552d0 100644 --- a/clutter/cogl/clutter-backend-cogl.c +++ b/clutter/cogl/clutter-backend-cogl.c @@ -46,42 +46,8 @@ static ClutterBackendCogl *backend_singleton = NULL; -static gchar *clutter_vblank = NULL; - G_DEFINE_TYPE (ClutterBackendCogl, _clutter_backend_cogl, CLUTTER_TYPE_BACKEND); -const gchar* -_clutter_backend_cogl_get_vblank (void) -{ - if (clutter_vblank && strcmp (clutter_vblank, "0") == 0) - return "none"; - else - return clutter_vblank; -} - -static gboolean -clutter_backend_cogl_pre_parse (ClutterBackend *backend, - GError **error) -{ - const gchar *env_string; - - env_string = g_getenv ("CLUTTER_VBLANK"); - if (env_string) - { - clutter_vblank = g_strdup (env_string); - env_string = NULL; - } - - return TRUE; -} - -static gboolean -clutter_backend_cogl_post_parse (ClutterBackend *backend, - GError **error) -{ - return TRUE; -} - static void clutter_backend_cogl_finalize (GObject *gobject) { @@ -133,14 +99,10 @@ static void _clutter_backend_cogl_class_init (ClutterBackendCoglClass *klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); - ClutterBackendClass *backend_class = CLUTTER_BACKEND_CLASS (klass); gobject_class->constructor = clutter_backend_cogl_constructor; gobject_class->dispose = clutter_backend_cogl_dispose; gobject_class->finalize = clutter_backend_cogl_finalize; - - backend_class->pre_parse = clutter_backend_cogl_pre_parse; - backend_class->post_parse = clutter_backend_cogl_post_parse; } static void From 5c9cafb411961fbd9117e86c6e8ca636f91fb158 Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Fri, 4 Nov 2011 16:52:44 +0000 Subject: [PATCH 24/43] cogl/backend: Remove the ClutterBackendCogl class All the functionality that ClutterBackendCogl provided has been moved into ClutterBackend itself, so there is no need to have this class around in the source. Cogl-based backends can derive directly from ClutterBackend. --- clutter/Makefile.am | 2 - clutter/cogl/clutter-backend-cogl.c | 111 ------------------------ clutter/cogl/clutter-backend-cogl.h | 68 --------------- clutter/cogl/clutter-stage-cogl.c | 10 +-- clutter/cogl/clutter-stage-cogl.h | 8 +- clutter/egl/clutter-backend-eglnative.c | 2 +- clutter/egl/clutter-backend-eglnative.h | 5 +- clutter/gdk/clutter-backend-gdk.c | 2 +- clutter/gdk/clutter-backend-gdk.h | 5 +- clutter/x11/clutter-backend-x11.c | 2 +- clutter/x11/clutter-backend-x11.h | 5 +- clutter/x11/clutter-stage-x11.c | 5 +- 12 files changed, 19 insertions(+), 206 deletions(-) delete mode 100644 clutter/cogl/clutter-backend-cogl.c delete mode 100644 clutter/cogl/clutter-backend-cogl.h diff --git a/clutter/Makefile.am b/clutter/Makefile.am index fb41ac211..69e8e2e62 100644 --- a/clutter/Makefile.am +++ b/clutter/Makefile.am @@ -388,12 +388,10 @@ endif # SUPPORT_X11 cogl_source_h = cogl_source_c = \ - $(srcdir)/cogl/clutter-backend-cogl.c \ $(srcdir)/cogl/clutter-stage-cogl.c \ $(NULL) cogl_source_h_priv = \ - $(srcdir)/cogl/clutter-backend-cogl.h \ $(srcdir)/cogl/clutter-stage-cogl.h \ $(NULL) diff --git a/clutter/cogl/clutter-backend-cogl.c b/clutter/cogl/clutter-backend-cogl.c deleted file mode 100644 index 31d0552d0..000000000 --- a/clutter/cogl/clutter-backend-cogl.c +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Clutter. - * - * An OpenGL based 'interactive canvas' library. - * - * Copyright (C) 2010,2011 Intel Corporation. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library. If not, see . - - * Authors: - * Matthew Allum - * Emmanuele Bassi - * Robert Bragg - * Neil Roberts - */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include -#include -#include -#include - -#include - -#include "clutter-backend-cogl.h" -#include "clutter-stage-cogl.h" - -#include "clutter-debug.h" -#include "clutter-private.h" -#include "clutter-main.h" -#include "clutter-stage-private.h" - -static ClutterBackendCogl *backend_singleton = NULL; - -G_DEFINE_TYPE (ClutterBackendCogl, _clutter_backend_cogl, CLUTTER_TYPE_BACKEND); - -static void -clutter_backend_cogl_finalize (GObject *gobject) -{ - if (backend_singleton) - backend_singleton = NULL; - - G_OBJECT_CLASS (_clutter_backend_cogl_parent_class)->finalize (gobject); -} - -static void -clutter_backend_cogl_dispose (GObject *gobject) -{ - ClutterBackend *backend = CLUTTER_BACKEND (gobject); - - if (backend->cogl_context) - { - cogl_object_unref (backend->cogl_context); - backend->cogl_context = NULL; - } - - G_OBJECT_CLASS (_clutter_backend_cogl_parent_class)->dispose (gobject); -} - -static GObject * -clutter_backend_cogl_constructor (GType gtype, - guint n_params, - GObjectConstructParam *params) -{ - GObjectClass *parent_class; - GObject *retval; - - if (backend_singleton == NULL) - { - parent_class = G_OBJECT_CLASS (_clutter_backend_cogl_parent_class); - retval = parent_class->constructor (gtype, n_params, params); - - backend_singleton = CLUTTER_BACKEND_COGL (retval); - - return retval; - } - - g_warning ("Attempting to create a new backend object. This should " - "never happen, so we return the singleton instance."); - - return g_object_ref (backend_singleton); -} - -static void -_clutter_backend_cogl_class_init (ClutterBackendCoglClass *klass) -{ - GObjectClass *gobject_class = G_OBJECT_CLASS (klass); - - gobject_class->constructor = clutter_backend_cogl_constructor; - gobject_class->dispose = clutter_backend_cogl_dispose; - gobject_class->finalize = clutter_backend_cogl_finalize; -} - -static void -_clutter_backend_cogl_init (ClutterBackendCogl *backend_cogl) -{ -} diff --git a/clutter/cogl/clutter-backend-cogl.h b/clutter/cogl/clutter-backend-cogl.h deleted file mode 100644 index 483b6cec9..000000000 --- a/clutter/cogl/clutter-backend-cogl.h +++ /dev/null @@ -1,68 +0,0 @@ -/* Clutter. - * An OpenGL based 'interactive canvas' library. - * - * Copyright (C) 2006, 2007 OpenedHand - * Copyright (C) 2010 Intel Corp - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library. If not, see . - * - * Authors: - * Matthew Allum - * Robert Bragg - */ - -#ifndef __CLUTTER_BACKEND_COGL_H__ -#define __CLUTTER_BACKEND_COGL_H__ - -#include -#include -#include -#include - -#ifdef COGL_HAS_XLIB_SUPPORT -#include -#include -#endif - -#include "clutter-backend-private.h" - -G_BEGIN_DECLS - -#define CLUTTER_TYPE_BACKEND_COGL (_clutter_backend_cogl_get_type ()) -#define CLUTTER_BACKEND_COGL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CLUTTER_TYPE_BACKEND_COGL, ClutterBackendCogl)) -#define CLUTTER_IS_BACKEND_COGL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CLUTTER_TYPE_BACKEND_COGL)) -#define CLUTTER_BACKEND_COGL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CLUTTER_TYPE_BACKEND_COGL, ClutterBackendCoglClass)) -#define CLUTTER_IS_BACKEND_COGL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CLUTTER_TYPE_BACKEND_COGL)) -#define CLUTTER_BACKEND_COGL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CLUTTER_TYPE_BACKEND_COGL, ClutterBackendCoglClass)) - -typedef struct _ClutterBackendCogl ClutterBackendCogl; -typedef struct _ClutterBackendCoglClass ClutterBackendCoglClass; - -struct _ClutterBackendCogl -{ - ClutterBackend parent_instance; - - gboolean can_blit_sub_buffer; -}; - -struct _ClutterBackendCoglClass -{ - ClutterBackendClass parent_class; -}; - -GType _clutter_backend_cogl_get_type (void) G_GNUC_CONST; - -G_END_DECLS - -#endif /* __CLUTTER_BACKEND_COGL_H__ */ diff --git a/clutter/cogl/clutter-stage-cogl.c b/clutter/cogl/clutter-stage-cogl.c index fe600c056..98af26972 100644 --- a/clutter/cogl/clutter-stage-cogl.c +++ b/clutter/cogl/clutter-stage-cogl.c @@ -33,15 +33,15 @@ #include "clutter-config.h" #include "clutter-stage-cogl.h" -#include "clutter-backend-cogl.h" +#include "clutter-actor-private.h" +#include "clutter-backend-private.h" #include "clutter-debug.h" #include "clutter-event.h" #include "clutter-enum-types.h" #include "clutter-feature.h" #include "clutter-main.h" #include "clutter-private.h" -#include "clutter-actor-private.h" #include "clutter-stage-private.h" #include "clutter-util.h" @@ -545,11 +545,11 @@ clutter_stage_cogl_set_property (GObject *gobject, switch (prop_id) { case PROP_WRAPPER: - self->wrapper = CLUTTER_STAGE (g_value_get_object (value)); + self->wrapper = g_value_get_object (value); break; case PROP_BACKEND: - self->backend = CLUTTER_BACKEND_COGL (g_value_get_object (value)); + self->backend = g_value_get_object (value); break; default: @@ -576,7 +576,7 @@ _clutter_stage_cogl_class_init (ClutterStageCoglClass *klass) g_param_spec_object ("backend", "ClutterBackend", "The Clutter backend singleton", - CLUTTER_TYPE_BACKEND_COGL, + CLUTTER_TYPE_BACKEND, CLUTTER_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY)); } diff --git a/clutter/cogl/clutter-stage-cogl.h b/clutter/cogl/clutter-stage-cogl.h index d3a9b9806..e1408246d 100644 --- a/clutter/cogl/clutter-stage-cogl.h +++ b/clutter/cogl/clutter-stage-cogl.h @@ -1,8 +1,8 @@ #ifndef __CLUTTER_STAGE_COGL_H__ #define __CLUTTER_STAGE_COGL_H__ -#include #include +#include #include #ifdef COGL_HAS_X11_SUPPORT @@ -11,8 +11,6 @@ #include #endif -#include "clutter-backend-cogl.h" - G_BEGIN_DECLS #define CLUTTER_TYPE_STAGE_COGL (_clutter_stage_cogl_get_type ()) @@ -30,10 +28,10 @@ struct _ClutterStageCogl GObject parent_instance; /* the stage wrapper */ - ClutterStage *wrapper; + ClutterStage *wrapper; /* back pointer to the backend */ - ClutterBackendCogl *backend; + ClutterBackend *backend; CoglOnscreen *onscreen; diff --git a/clutter/egl/clutter-backend-eglnative.c b/clutter/egl/clutter-backend-eglnative.c index e14d8aca1..de9276117 100644 --- a/clutter/egl/clutter-backend-eglnative.c +++ b/clutter/egl/clutter-backend-eglnative.c @@ -68,7 +68,7 @@ static guint gdl_n_buffers = CLUTTER_CEX100_TRIPLE_BUFFERING; #define clutter_backend_egl_native_get_type _clutter_backend_egl_native_get_type -G_DEFINE_TYPE (ClutterBackendEglNative, clutter_backend_egl_native, CLUTTER_TYPE_BACKEND_COGL); +G_DEFINE_TYPE (ClutterBackendEglNative, clutter_backend_egl_native, CLUTTER_TYPE_BACKEND); static ClutterDeviceManager * clutter_backend_egl_native_get_device_manager (ClutterBackend *backend) diff --git a/clutter/egl/clutter-backend-eglnative.h b/clutter/egl/clutter-backend-eglnative.h index 5156339e9..87ff7ee98 100644 --- a/clutter/egl/clutter-backend-eglnative.h +++ b/clutter/egl/clutter-backend-eglnative.h @@ -32,7 +32,6 @@ #include #include "clutter-backend-private.h" -#include "cogl/clutter-backend-cogl.h" G_BEGIN_DECLS @@ -48,7 +47,7 @@ typedef struct _ClutterBackendEglNativeClass ClutterBackendEglNativeClass; struct _ClutterBackendEglNative { - ClutterBackendCogl parent_instance; + ClutterBackend parent_instance; /* main stage singleton */ ClutterStageWindow *stage; @@ -65,7 +64,7 @@ struct _ClutterBackendEglNative struct _ClutterBackendEglNativeClass { - ClutterBackendCoglClass parent_class; + ClutterBackendClass parent_class; }; GType _clutter_backend_egl_native_get_type (void) G_GNUC_CONST; diff --git a/clutter/gdk/clutter-backend-gdk.c b/clutter/gdk/clutter-backend-gdk.c index dedef89f0..38f574091 100644 --- a/clutter/gdk/clutter-backend-gdk.c +++ b/clutter/gdk/clutter-backend-gdk.c @@ -60,7 +60,7 @@ #include "clutter-private.h" #define clutter_backend_gdk_get_type _clutter_backend_gdk_get_type -G_DEFINE_TYPE (ClutterBackendGdk, clutter_backend_gdk, CLUTTER_TYPE_BACKEND_COGL); +G_DEFINE_TYPE (ClutterBackendGdk, clutter_backend_gdk, CLUTTER_TYPE_BACKEND); /* global for pre init setup calls */ static GdkDisplay *_foreign_dpy = NULL; diff --git a/clutter/gdk/clutter-backend-gdk.h b/clutter/gdk/clutter-backend-gdk.h index 73f8d8642..fb5411315 100644 --- a/clutter/gdk/clutter-backend-gdk.h +++ b/clutter/gdk/clutter-backend-gdk.h @@ -30,7 +30,6 @@ #include "clutter-gdk.h" #include "clutter-backend-private.h" -#include "cogl/clutter-backend-cogl.h" G_BEGIN_DECLS @@ -46,7 +45,7 @@ typedef struct _ClutterBackendGdkClass ClutterBackendGdkClass; struct _ClutterBackendGdk { - ClutterBackendCogl parent_instance; + ClutterBackend parent_instance; GdkDisplay *display; GdkScreen *screen; @@ -56,7 +55,7 @@ struct _ClutterBackendGdk struct _ClutterBackendGdkClass { - ClutterBackendCoglClass parent_class; + ClutterBackendClass parent_class; /* nothing here, for now */ }; diff --git a/clutter/x11/clutter-backend-x11.c b/clutter/x11/clutter-backend-x11.c index 8b5a519a7..8e8f1a61a 100644 --- a/clutter/x11/clutter-backend-x11.c +++ b/clutter/x11/clutter-backend-x11.c @@ -70,7 +70,7 @@ #define clutter_backend_x11_get_type _clutter_backend_x11_get_type -G_DEFINE_TYPE (ClutterBackendX11, clutter_backend_x11, CLUTTER_TYPE_BACKEND_COGL); +G_DEFINE_TYPE (ClutterBackendX11, clutter_backend_x11, CLUTTER_TYPE_BACKEND); /* atoms; remember to add the code that assigns the atom value to * the member of the ClutterBackendX11 structure if you add an diff --git a/clutter/x11/clutter-backend-x11.h b/clutter/x11/clutter-backend-x11.h index 9398616db..292273378 100644 --- a/clutter/x11/clutter-backend-x11.h +++ b/clutter/x11/clutter-backend-x11.h @@ -31,7 +31,6 @@ #include "clutter-backend-private.h" #include "clutter-keymap-x11.h" -#include "cogl/clutter-backend-cogl.h" #include "xsettings/xsettings-client.h" @@ -68,7 +67,7 @@ struct _ClutterEventX11 struct _ClutterBackendX11 { - ClutterBackendCogl parent_instance; + ClutterBackend parent_instance; Display *xdpy; gchar *display_name; @@ -113,7 +112,7 @@ struct _ClutterBackendX11 struct _ClutterBackendX11Class { - ClutterBackendCoglClass parent_class; + ClutterBackendClass parent_class; }; GType _clutter_backend_x11_get_type (void) G_GNUC_CONST; diff --git a/clutter/x11/clutter-stage-x11.c b/clutter/x11/clutter-stage-x11.c index edf7b9c48..7ceb0d532 100644 --- a/clutter/x11/clutter-stage-x11.c +++ b/clutter/x11/clutter-stage-x11.c @@ -787,10 +787,9 @@ static void clutter_stage_x11_dispose (GObject *gobject) { ClutterEventTranslator *translator = CLUTTER_EVENT_TRANSLATOR (gobject); - ClutterBackendCogl *backend = CLUTTER_STAGE_COGL (gobject)->backend; + ClutterBackend *backend = CLUTTER_STAGE_COGL (gobject)->backend; - _clutter_backend_remove_event_translator (CLUTTER_BACKEND (backend), - translator); + _clutter_backend_remove_event_translator (backend, translator); G_OBJECT_CLASS (clutter_stage_x11_parent_class)->dispose (gobject); } From 89e26497de8f3f05fbaf409436c4ee92f5d3669c Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Fri, 4 Nov 2011 17:44:55 +0000 Subject: [PATCH 25/43] Add a CEx100-specific backend Instead of piggybacking on the EGL backend, let's create a small ClutterBackend for the CEx100 platforms. This allows us to handle the CEx100-specific details in a much cleaner way. --- .gitignore | 2 +- clutter/Makefile.am | 11 +- clutter/cex100/clutter-backend-cex100.c | 264 ++++++++++++++++++++ clutter/cex100/clutter-backend-cex100.h | 74 ++++++ clutter/{egl => cex100}/clutter-cex100.h.in | 35 +-- configure.ac | 134 +++++----- 6 files changed, 422 insertions(+), 98 deletions(-) create mode 100644 clutter/cex100/clutter-backend-cex100.c create mode 100644 clutter/cex100/clutter-backend-cex100.h rename clutter/{egl => cex100}/clutter-cex100.h.in (63%) diff --git a/.gitignore b/.gitignore index a9bec3094..8278da8e8 100644 --- a/.gitignore +++ b/.gitignore @@ -22,7 +22,7 @@ stamp-marshal /clutter/clutter-version.h /clutter/gcov-report.txt /clutter/clutter-json.h -/clutter/egl/clutter-cex100.h +/clutter/cex100/clutter-cex100.h /build/autotools/*.m4 !/build/autotools/introspection.m4 !/build/autotools/as-linguas.m4 diff --git a/clutter/Makefile.am b/clutter/Makefile.am index 69e8e2e62..86f07f01a 100644 --- a/clutter/Makefile.am +++ b/clutter/Makefile.am @@ -547,7 +547,9 @@ evdev_h_priv = \ $(srcdir)/evdev/clutter-input-device-evdev.h \ $(NULL) -cex_h = egl/clutter-cex100.h +cex_source_h_priv = $(srcdir)/cex100/clutter-backend-cex100.h +cex_source_c = $(srcdir)/cex100/clutter-backend-cex100.c +cex_h = cex100/clutter-cex100.h BUILT_SOURCES += $(cex_h) EXTRA_DIST += $(srcdir)/$(cex_h).in @@ -562,7 +564,12 @@ egl_source_h_priv += $(evdev_h_priv) endif # SUPPORT_EVDEV if SUPPORT_CEX100 -egl_source_h += $(cex_h) +backend_source_h += $(cex_h) +backend_source_c += $(cex_source_c) +backend_source_h_priv += $(cex_source_h_priv) + +cluttercex100_includedir = $(clutter_includedir)/cex100 +cluttercex100_include_HEADERS = $(cex_h) clutter-cex100-$(CLUTTER_API_VERSION).pc: clutter-$(CLUTTER_API_VERSION).pc $(QUIET_GEN)cp -f $< $(@F) diff --git a/clutter/cex100/clutter-backend-cex100.c b/clutter/cex100/clutter-backend-cex100.c new file mode 100644 index 000000000..093fb1f54 --- /dev/null +++ b/clutter/cex100/clutter-backend-cex100.c @@ -0,0 +1,264 @@ +/* + * Clutter. + * + * An OpenGL based 'interactive canvas' library. + * + * Copyright (C) 2010,2011 Intel Corporation. + * 2011 Giovanni Campagna + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see . + + * Authors: + * Matthew Allum + * Emmanuele Bassi + * Robert Bragg + * Neil Roberts + */ + +#include "config.h" + +#include +#include +#include +#include + +#include + +#include "clutter-backend-eglnative.h" + +/* This is a Cogl based backend */ +#include "cogl/clutter-stage-cogl.h" + +#ifdef HAVE_EVDEV +#include "clutter-device-manager-evdev.h" +#endif + +#include "clutter-debug.h" +#include "clutter-private.h" +#include "clutter-main.h" +#include "clutter-stage-private.h" + +#ifdef COGL_HAS_EGL_SUPPORT +#include "clutter-egl.h" +#endif + +#include "clutter-cex100.h" + +static gdl_plane_id_t gdl_plane = GDL_PLANE_ID_UPP_C; +static guint gdl_n_buffers = CLUTTER_CEX100_TRIPLE_BUFFERING; + +#define clutter_backend_cex100_get_type _clutter_backend_cex100_get_type + +G_DEFINE_TYPE (ClutterBackendCex100, clutter_backend_cex100, CLUTTER_TYPE_BACKEND); + +static ClutterDeviceManager * +clutter_backend_cex100_get_device_manager (ClutterBackend *backend) +{ + ClutterBackendCex100 *backend_cex100 = CLUTTER_BACKEND_CEX100 (backend); + +#ifdef HAVE_EVDEV + if (G_UNLIKELY (backend_cex100->device_manager == NULL)) + { + backend_cex100->device_manager = + g_object_new (CLUTTER_TYPE_DEVICE_MANAGER_EVDEV, + "backend", backend_cex100, + NULL); + } +#endif /* HAVE_EVDEV */ + + return backend_cex100->device_manager; +} + +static void +clutter_backend_cex100_dispose (GObject *gobject) +{ + ClutterBackendCex100 *backend_cex100 = CLUTTER_BACKEND_CEX100 (gobject); + + if (backend_cex100->event_timer != NULL) + { + g_timer_destroy (backend_cex100->event_timer); + backend_cex100->event_timer = NULL; + } + + if (backend_cex100->device_manager != NULL) + { + g_object_unref (backend_cex100->device_manager); + backend_cex100->device_manager = NULL; + } + + G_OBJECT_CLASS (clutter_backend_cex100_parent_class)->dispose (gobject); +} + +static ClutterStageWindow * +clutter_backend_cex100_create_stage (ClutterBackend *backend, + ClutterStage *wrapper, + GError **error) +{ + ClutterBackendCex100 *backend_cex100 = CLUTTER_BACKEND_CEX100 (backend); + ClutterStageWindow *stage; + + if (G_UNLIKELY (backend_cex100->stage != NULL)) + { + g_set_error (error, CLUTTER_INIT_ERROR, + CLUTTER_INIT_ERROR_BACKEND, + "The Cex100 backend does not support multiple " + "onscreen windows"); + return backend_cex100->stage; + } + + stage = g_object_new (CLUTTER_TYPE_STAGE_COGL, + "backend", backend, + "wrapper", wrapper, + NULL); + backend_cex100->stage = stage; + + return stage; +} + +static CoglDisplay * +clutter_backend_cex100_get_display (ClutterBackend *backend, + CoglRenderer *renderer, + CoglSwapChain *swap_chain, + GError **error) +{ + CoglOnscreenTemplate *onscreen_template = NULL; + CoglDisplay *display; + + swap_chain = cogl_swap_chain_new (); + +#if defined(COGL_HAS_GDL_SUPPORT) + cogl_swap_chain_set_length (swap_chain, gdl_n_buffers); +#endif + + onscreen_template = cogl_onscreen_template_new (swap_chain); + + /* XXX: I have some doubts that this is a good design. + * Conceptually should we be able to check an onscreen_template + * without more details about the CoglDisplay configuration? + */ + if (!cogl_renderer_check_onscreen_template (renderer, + onscreen_template, + error)) + goto error; + + display = cogl_display_new (renderer, onscreen_template); + +#if defined(COGL_HAS_GDL_SUPPORT) + cogl_gdl_display_set_plane (cogl_display, gdl_plane); +#endif + + return display; +} + +static void +clutter_backend_cex100_class_init (ClutterBackendCex100Class *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + ClutterBackendClass *backend_class = CLUTTER_BACKEND_CLASS (klass); + + gobject_class->dispose = clutter_backend_cex100_dispose; + + backend_class->get_device_manager = clutter_backend_cex100_get_device_manager; + backend_class->create_stage = clutter_backend_cex100_create_stage; + backend_class->get_display = clutter_backend_cex100_get_display; +} + +static void +clutter_backend_cex100_init (ClutterBackendCex100 *backend_cex100) +{ + backend_cex100->event_timer = g_timer_new (); +} + +/** + * clutter_cex100_set_plane: + * @plane: a GDL plane + * + * Intel CE3100 and CE4100 have several planes (frame buffers) and a + * hardware blender to blend the planes togeteher and produce the final + * image. + * + * clutter_cex100_set_plane() let's you configure the GDL plane where + * the stage will be drawn. By default Clutter will pick UPP_C + * (GDL_PLANE_ID_UPP_C). + * + * This function has to be called before clutter_init() + * + * Since: 1.6 + */ +void +clutter_cex100_set_plane (gdl_plane_id_t plane) +{ + g_return_if_fail (plane >= GDL_PLANE_ID_UPP_A && plane <= GDL_PLANE_ID_UPP_E); + + gdl_plane = plane; +} + +/** + * clutter_cex100_set_buffering_mode: + * @mode: a #ClutterCex100BufferingMode + * + * Configure the buffering mode of the underlying GDL plane. The GDL + * surface used by Clutter to draw can be backed up by either one or two + * back buffers thus being double or triple buffered, respectively. + * + * Clutter defaults to %CLUTTER_CEX100_TRIPLE_BUFFERING. + * + * This function has to be called before clutter_init() + * + * Since: 1.6 + */ +void +clutter_cex100_set_buffering_mode (ClutterCex100BufferingMode mode) +{ + g_return_if_fail (mode == CLUTTER_CEX100_DOUBLE_BUFFERING || + mode == CLUTTER_CEX100_TRIPLE_BUFFERING); + + gdl_n_buffers = mode; +} + +/** + * clutter_cex100_get_egl_display: + * + * Retrieves the EGL display used by Clutter, if it supports the + * EGL windowing system and if it is running using an EGL backend. + * + * Return value: the EGL display used by Clutter, or 0 + * + * Since: 1.10 + */ +EGLDisplay +clutter_cex100_get_egl_display (void) +{ + ClutterBackend *backend; + + if (!_clutter_context_is_initialized ()) + { + g_critical ("The Clutter backend has not been initialized yet"); + return 0; + } + + backend = clutter_get_default_backend (); + + if (!CLUTTER_IS_BACKEND_CEX100 (backend)) + { + g_critical ("The Clutter backend is not a CEX100 backend"); + return 0; + } + +#if COGL_HAS_EGL_SUPPORT + return cogl_egl_context_get_egl_display (backend->cogl_context); +#else + return 0; +#endif +} diff --git a/clutter/cex100/clutter-backend-cex100.h b/clutter/cex100/clutter-backend-cex100.h new file mode 100644 index 000000000..b55b89aee --- /dev/null +++ b/clutter/cex100/clutter-backend-cex100.h @@ -0,0 +1,74 @@ +/* Clutter. + * An OpenGL based 'interactive canvas' library. + * + * Copyright (C) 2006, 2007 OpenedHand + * Copyright (C) 2010 Intel Corp + * 2011 Giovanni Campagna + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see . + * + * Authors: + * Matthew Allum + * Robert Bragg + */ + +#ifndef __CLUTTER_BACKEND_CEX100_H__ +#define __CLUTTER_BACKEND_CEX100_H__ + +#include +#include +#include +#include + +#include "clutter-backend-private.h" + +G_BEGIN_DECLS + +#define CLUTTER_TYPE_BACKEND_CEX100 (_clutter_backend_cex100_get_type ()) +#define CLUTTER_BACKEND_CEX100(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CLUTTER_TYPE_BACKEND_CEX100, ClutterBackendCex100)) +#define CLUTTER_IS_BACKEND_CEX100(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CLUTTER_TYPE_BACKEND_CEX100)) +#define CLUTTER_BACKEND_CEX100_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CLUTTER_TYPE_BACKEND_CEX100, ClutterBackendCex100Class)) +#define CLUTTER_IS_BACKEND_CEX100_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CLUTTER_TYPE_BACKEND_CEX100)) +#define CLUTTER_BACKEND_CEX100_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CLUTTER_TYPE_BACKEND_CEX100, ClutterBackendCex100Class)) + +typedef struct _ClutterBackendCex100 ClutterBackendCex100; +typedef struct _ClutterBackendCex100Class ClutterBackendCex100Class; + +struct _ClutterBackendCex100 +{ + ClutterBackend parent_instance; + + /* main stage singleton */ + ClutterStageWindow *stage; + + /* device manager (ie evdev) */ + ClutterDeviceManager *device_manager; + + /* event source */ + GSource *event_source; + + /* event timer */ + GTimer *event_timer; +}; + +struct _ClutterBackendCex100Class +{ + ClutterBackendClass parent_class; +}; + +GType _clutter_backend_cex100_get_type (void) G_GNUC_CONST; + +G_END_DECLS + +#endif /* __CLUTTER_BACKEND_CEX100_H__ */ diff --git a/clutter/egl/clutter-cex100.h.in b/clutter/cex100/clutter-cex100.h.in similarity index 63% rename from clutter/egl/clutter-cex100.h.in rename to clutter/cex100/clutter-cex100.h.in index d6d976da9..cbf7cef16 100644 --- a/clutter/egl/clutter-cex100.h.in +++ b/clutter/cex100/clutter-cex100.h.in @@ -43,28 +43,14 @@ G_BEGIN_DECLS -/** - * clutter_cex100_set_plane: - * @plane: a GDL plane - * - * Intel CE3100 and CE4100 have several planes (frame buffers) and a - * hardware blender to blend the planes togeteher and produce the final - * image. - * - * clutter_cex100_set_plane() let's you configure the GDL plane where - * the stage will be drawn. By default Clutter will pick UPP_C - * (GDL_PLANE_ID_UPP_C). - * - * This function has to be called before clutter_init() - */ -void clutter_cex100_set_plane (gdl_plane_id_t plane); - /** * ClutterCex100BufferingMode: * @CLUTTER_CEX100_DOUBLE_BUFFERING: The GDL plane will be double buffered * @CLUTTER_CEX100_TRIPLE_BUFFERING: The GDL plane will be triple buffered * * Enum passed to clutter_cex100_set_buffering_mode(). + * + * Since: 1.6 */ typedef enum /*< prefix=CLUTTER_CEX100 >*/ { @@ -72,19 +58,10 @@ typedef enum /*< prefix=CLUTTER_CEX100 >*/ CLUTTER_CEX100_TRIPLE_BUFFERING = 3 } ClutterCex100BufferingMode; -/** - * clutter_cex100_set_buffering_mode: - * @mode: a #ClutterCex100BufferingMode - * - * Configure the buffering mode of the underlying GDL plane. The GDL - * surface used by Clutter to draw can be backed up by either one or two - * back buffers thus being double or triple buffered, respectively. - * - * Clutter defaults to %CLUTTER_CEX100_TRIPLE_BUFFERING. - * - * This function has to be called before clutter_init() - */ -void clutter_cex100_set_buffering_mode (ClutterCex100BufferingMode mode); +void clutter_cex100_set_plane (gdl_plane_id_t plane); +void clutter_cex100_set_buffering_mode (ClutterCex100BufferingMode mode); + +EGLDisplay clutter_cex100_get_egl_display (void); G_END_DECLS diff --git a/configure.ac b/configure.ac index ea1ad40c7..7ff01ff8b 100644 --- a/configure.ac +++ b/configure.ac @@ -227,6 +227,10 @@ AC_ARG_ENABLE([egl-backend], [AS_HELP_STRING([--enable-egl-backend=@<:@yes/no@:>@], [Enable the EGL framebuffer backend (default=no)])], [enable_egl=$enableval], [enable_egl=no]) +AC_ARG_ENABLE([cex100-backend], + [AS_HELP_STRING([--enable-cex100-backend=@<:@yes/no@:>@], [Enable the CEx100 backend (default=no)])], + [enable_cex100=$enableval], + [enable_cex100=no]) dnl Define default values AS_IF([test "x$enable_x11" = "xcheck"], @@ -313,6 +317,38 @@ AS_IF([test "x$enable_wayland" = "xyes"], AC_DEFINE([HAVE_CLUTTER_WAYLAND], [1], [Have the Wayland backend]) ]) +AS_IF([test "x$enable_cex100" = "xyes"], + [ + CLUTTER_BACKENDS="$CLUTTER_BACKENDS cex100" + + SUPPORT_COGL=1 + SUPPORT_EGL_PLATFORM_GDL=1 + + have_gdl=no + AC_CHECK_HEADERS([libgdl.h], [have_gdl=yes]) + + AS_IF([test "x$have_gdl" = "xno"], + [ + AC_CHECK_HEADERS([CE4100/libgdl.h], + [ + FLAVOUR_CFLAGS="-I/usr/include/CE4100" + have_gdl=yes + CLUTTER_CEX100_LIBGDL_PREFIX=CE4100/ + ]) + ]) + + AS_IF([test "x$have_gdl" = "xno"], + [AC_MSG_ERROR([libgdl.h not found but the CEx100 backend has been explicitly enabled])]) + + AC_SUBST(CLUTTER_CEX100_LIBGDL_PREFIX) + + FLAVOUR_LIBS="$FLAVOUR_LIBS -lgdl" + + AC_DEFINE([CLUTTER_EGL_BACKEND_CEX100], [1], [Use CEX100 EGL backend]) + AC_DEFINE([CLUTTER_EGL_BACKEND_GENERIC], [1], [Use Generic EGL backend]) + AC_DEFINE([HAVE_CLUTTER_EGL], [1], [Have the EGL backend]) + ]) + AS_IF([test "x$enable_egl" = "xyes"], [ CLUTTER_BACKENDS="$CLUTTER_BACKENDS egl" @@ -327,71 +363,6 @@ AS_IF([test "x$enable_egl" = "xyes"], ], []) - AC_ARG_WITH([tslib], - [AS_HELP_STRING([--with-tslib=@<:@yes/no@:>@], [Use TSLib for events (default=no)])], - [], - [with_tslib=no]) - - AC_ARG_WITH([evdev], - [AS_HELP_STRING([--with-evdev=@<:@yes/no@:>@], [Use evdev for events (default=yes)])], - [], - [with_evdev=yes]) - - AC_ARG_WITH([gdl], - [AS_HELP_STRING([--with-gdl=@<:@yes/no@:>@], [Use libgdl for CE3100/CE4100 support (default=no)])], - [], - [with_gdl=no]) - - AS_IF([test "x$with_tslib" = "xyes"], - [ - PKG_CHECK_MODULES(TSLIB, [tslib-1.0], [have_tslib=yes], [have_tslib=no]) - AS_IF([test "x$have_tslib" = "xyes"], - [ - AC_DEFINE([HAVE_TSLIB], [1], [Have tslib for touchscreen handling]) - SUPPORT_TSLIB=1 - ]) - ], - [have_tslib=no]) - - AS_IF([test "x$with_evdev" = "xyes"], - [ - PKG_CHECK_MODULES(EVDEV, [gudev-1.0 xkbcommon], [have_evdev=yes], [have_evdev=no]) - AS_IF([test "x$have_evdev" = "xyes"], - [ - AC_DEFINE([HAVE_EVDEV], [1], [Have evdev support for input handling]) - SUPPORT_EVDEV=1 - ]) - ], - [have_evdev=no]) - - AS_IF([test "x$with_gdl" = "xyes"], - [ - have_gdl=no - - AC_CHECK_HEADERS([libgdl.h], [have_gdl=yes]) - - AS_IF([test "x$have_gdl" = "xno"], - [ - AC_CHECK_HEADERS([CE4100/libgdl.h], - [ - FLAVOUR_CFLAGS="-I/usr/include/CE4100" - have_gdl=yes - CLUTTER_CEX100_LIBGDL_PREFIX=CE4100/ - ]) - ]) - - AC_SUBST(CLUTTER_CEX100_LIBGDL_PREFIX) - - AS_IF([test "x$have_gdl" = "xno"], [AC_MSG_ERROR([libgdl.h not found])]) - - FLAVOUR_LIBS="$FLAVOUR_LIBS -lgdl" - - SUPPORT_EGL_PLATFORM_GDL=1 - - AC_DEFINE([CLUTTER_EGL_BACKEND_CEX100], [1], [Use CEX100 EGL backend]) - ], - [have_gdl=no]) - FLAVOUR_LIBS="$FLAVOUR_LIBS $TSLIB_LIBS $EVDEV_LIBS" FLAVOUR_CFLAGS="$FLAVOUR_CFLAGS $TSLIB_CFLAGS $EVDEV_CFLAGS" @@ -430,6 +401,37 @@ AS_IF([test "x$CLUTTER_BACKENDS" = "x"], AC_MSG_ERROR([No backend enabled. You need to enable at least one backend.]) ]) +# additional input backends + +AC_ARG_ENABLE([tslib-input], + [AS_HELP_STRING([--enable-tslib-input=@<:@yes/no@:>@], [Enable TSLib for input events (default=no)])], + [enable_tslib=$enableval], + [enable_tslib=no]) +AC_ARG_ENABLE([evdev-input], + [AS_HELP_STRING([--with-evdev=@<:@yes/no@:>@], [Enable evdev for input events (default=yes)])], + [enable_evdev=$enableval], + [enable_evdev=yes]) + +AS_IF([test "x$enable_tslib" = "xyes"], + [ + PKG_CHECK_MODULES(TSLIB, [tslib-1.0], [have_tslib=yes], [have_tslib=no]) + AS_IF([test "x$have_tslib" = "xyes"], + [ + AC_DEFINE([HAVE_TSLIB], [1], [Have tslib for touchscreen handling]) + SUPPORT_TSLIB=1 + ]) + ]) + +AS_IF([test "x$enable_evdev" = "xyes"], + [ + PKG_CHECK_MODULES(EVDEV, [gudev-1.0 xkbcommon], [have_evdev=yes], [have_evdev=no]) + AS_IF([test "x$have_evdev" = "xyes"], + [ + AC_DEFINE([HAVE_EVDEV], [1], [Have evdev support for input handling]) + SUPPORT_EVDEV=1 + ]) + ]) + # conditionals for use in automake files... AM_CONDITIONAL(SUPPORT_GLX, [test "x$SUPPORT_GLX" = "x1"]) AM_CONDITIONAL(SUPPORT_X11, [test "x$SUPPORT_X11" = "x1"]) @@ -1001,7 +1003,7 @@ AC_CONFIG_FILES([ clutter/cally/cally-$CLUTTER_API_VERSION.pc:clutter/cally/cally.pc.in - clutter/egl/clutter-cex100.h + clutter/cex100/clutter-cex100.h tests/Makefile tests/accessibility/Makefile From 04a2b5f42b0bee41dbb6968b98551bb0fa079548 Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Fri, 4 Nov 2011 17:49:25 +0000 Subject: [PATCH 26/43] egl/backend: Clean up The "EGL native" backend is just a short-hand for a pure Cogl backend, using whatever input mechanism was enabled at run-time. --- clutter/egl/clutter-backend-eglnative.c | 136 +----------------------- clutter/egl/clutter-egl.h | 5 - 2 files changed, 2 insertions(+), 139 deletions(-) diff --git a/clutter/egl/clutter-backend-eglnative.c b/clutter/egl/clutter-backend-eglnative.c index de9276117..e1d052fe4 100644 --- a/clutter/egl/clutter-backend-eglnative.c +++ b/clutter/egl/clutter-backend-eglnative.c @@ -44,10 +44,6 @@ #include "clutter-device-manager-evdev.h" #endif -#ifdef HAVE_TSLIB -#include "clutter-event-tslib.h" -#endif - #include "clutter-debug.h" #include "clutter-private.h" #include "clutter-main.h" @@ -57,15 +53,6 @@ #include "clutter-egl.h" #endif -#ifdef CLUTTER_EGL_BACKEND_CEX100 -#include "clutter-cex100.h" -#endif - -#ifdef CLUTTER_EGL_BACKEND_CEX100 -static gdl_plane_id_t gdl_plane = GDL_PLANE_ID_UPP_C; -static guint gdl_n_buffers = CLUTTER_CEX100_TRIPLE_BUFFERING; -#endif - #define clutter_backend_egl_native_get_type _clutter_backend_egl_native_get_type G_DEFINE_TYPE (ClutterBackendEglNative, clutter_backend_egl_native, CLUTTER_TYPE_BACKEND); @@ -75,15 +62,15 @@ clutter_backend_egl_native_get_device_manager (ClutterBackend *backend) { ClutterBackendEglNative *backend_egl_native = CLUTTER_BACKEND_EGL_NATIVE (backend); +#ifdef HAVE_EVDEV if (G_UNLIKELY (backend_egl_native->device_manager == NULL)) { -#ifdef HAVE_EVDEV backend_egl_native->device_manager = g_object_new (CLUTTER_TYPE_DEVICE_MANAGER_EVDEV, "backend", backend_egl_native, NULL); -#endif } +#endif return backend_egl_native->device_manager; } @@ -99,19 +86,11 @@ clutter_backend_egl_native_dispose (GObject *gobject) backend_egl_native->event_timer = NULL; } -#ifdef HAVE_TSLIB - _clutter_events_tslib_uninit (CLUTTER_BACKEND (gobject)); -#endif - -#ifdef HAVE_EVDEV - _clutter_events_evdev_uninit (CLUTTER_BACKEND (gobject)); - if (backend_egl_native->device_manager != NULL) { g_object_unref (backend_egl_native->device_manager); backend_egl_native->device_manager = NULL; } -#endif G_OBJECT_CLASS (clutter_backend_egl_native_parent_class)->dispose (gobject); } @@ -142,79 +121,6 @@ clutter_backend_egl_native_create_stage (ClutterBackend *backend, return stage; } -static gboolean -clutter_backend_egl_native_create_context (ClutterBackend *backend, - GError **error) -{ - CoglSwapChain *swap_chain = NULL; - CoglOnscreenTemplate *onscreen_template = NULL; - - if (backend->cogl_context != NULL) - return TRUE; - - backend->cogl_renderer = cogl_renderer_new (); - if (!cogl_renderer_connect (backend->cogl_renderer, error)) - goto error; - - swap_chain = cogl_swap_chain_new (); - -#if defined(CLUTTER_EGL_BACKEND_CEX100) && defined(COGL_HAS_GDL_SUPPORT) - cogl_swap_chain_set_length (swap_chain, gdl_n_buffers); -#endif - - onscreen_template = cogl_onscreen_template_new (swap_chain); - cogl_object_unref (swap_chain); - - /* XXX: I have some doubts that this is a good design. - * Conceptually should we be able to check an onscreen_template - * without more details about the CoglDisplay configuration? - */ - if (!cogl_renderer_check_onscreen_template (backend->cogl_renderer, - onscreen_template, - error)) - goto error; - - backend->cogl_display = cogl_display_new (backend->cogl_renderer, - onscreen_template); - -#if defined(CLUTTER_EGL_BACKEND_CEX100) && defined(COGL_HAS_GDL_SUPPORT) - cogl_gdl_display_set_plane (backend->cogl_display, gdl_plane); -#endif /* CLUTTER_EGL_BACKEND_CEX100 */ - - cogl_object_unref (backend->cogl_renderer); - cogl_object_unref (onscreen_template); - - if (!cogl_display_setup (backend->cogl_display, error)) - goto error; - - backend->cogl_context = cogl_context_new (backend->cogl_display, error); - if (backend->cogl_context == NULL) - goto error; - - return TRUE; - -error: - if (backend->cogl_display != NULL) - { - cogl_object_unref (backend->cogl_display); - backend->cogl_display = NULL; - } - - if (onscreen_template != NULL) - cogl_object_unref (onscreen_template); - - if (swap_chain != NULL) - cogl_object_unref (swap_chain); - - if (backend->cogl_renderer != NULL) - { - cogl_object_unref (backend->cogl_renderer); - backend->cogl_renderer = NULL; - } - - return FALSE; -} - static void clutter_backend_egl_native_class_init (ClutterBackendEglNativeClass *klass) { @@ -225,7 +131,6 @@ clutter_backend_egl_native_class_init (ClutterBackendEglNativeClass *klass) backend_class->get_device_manager = clutter_backend_egl_native_get_device_manager; backend_class->create_stage = clutter_backend_egl_native_create_stage; - backend_class->create_context = clutter_backend_egl_native_create_context; } static void @@ -234,43 +139,6 @@ clutter_backend_egl_native_init (ClutterBackendEglNative *backend_egl_native) backend_egl_native->event_timer = g_timer_new (); } -#ifdef CLUTTER_EGL_BACKEND_CEX100 -/** - * clutter_cex100_set_plane: - * @plane: FIXME - * - * FIXME - * - * Since: - */ -void -clutter_cex100_set_plane (gdl_plane_id_t plane) -{ - g_return_if_fail (plane >= GDL_PLANE_ID_UPP_A && plane <= GDL_PLANE_ID_UPP_E); - - gdl_plane = plane; -} -#endif - -#ifdef CLUTTER_EGL_BACKEND_CEX100 -/** - * clutter_cex100_set_plane: - * @mode: FIXME - * - * FIXME - * - * Since: - */ -void -clutter_cex100_set_buffering_mode (ClutterCex100BufferingMode mode) -{ - g_return_if_fail (mode == CLUTTER_CEX100_DOUBLE_BUFFERING || - mode == CLUTTER_CEX100_TRIPLE_BUFFERING); - - gdl_n_buffers = mode; -} -#endif - /** * clutter_eglx_display: * diff --git a/clutter/egl/clutter-egl.h b/clutter/egl/clutter-egl.h index 193290a54..c15cd1556 100644 --- a/clutter/egl/clutter-egl.h +++ b/clutter/egl/clutter-egl.h @@ -49,10 +49,6 @@ G_BEGIN_DECLS -#define CLUTTER_TSLIB_INPUT_BACKEND "tslib" -#define CLUTTER_EVDEV_INPUT_BACKEND "evdev" - -#ifndef CLUTTER_DISABLE_DEPRECATED /** * clutter_eglx_display: * @@ -79,7 +75,6 @@ EGLDisplay clutter_eglx_display (void); */ CLUTTER_DEPRECATED_FOR(clutter_egl_get_egl_display) EGLDisplay clutter_egl_display (void); -#endif /* CLUTTER_DISABLE_DEPRECATED */ /** * clutter_egl_get_egl_display: From 6082be409ee3f64770170e73323a2df5b50084c2 Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Fri, 4 Nov 2011 18:26:33 +0000 Subject: [PATCH 27/43] backend: Store the type of the StageWindow implementation We can use it later on to create it and provide a default create_stage() implementation. --- clutter/clutter-backend-private.h | 2 ++ clutter/clutter-backend.c | 2 ++ 2 files changed, 4 insertions(+) diff --git a/clutter/clutter-backend-private.h b/clutter/clutter-backend-private.h index 495aec351..c9ba24a89 100644 --- a/clutter/clutter-backend-private.h +++ b/clutter/clutter-backend-private.h @@ -53,6 +53,8 @@ struct _ClutterBackendClass /*< private >*/ GObjectClass parent_class; + GType stage_window_type; + /* vfuncs */ gboolean (* pre_parse) (ClutterBackend *backend, GError **error); diff --git a/clutter/clutter-backend.c b/clutter/clutter-backend.c index de7ece385..9cabfad11 100644 --- a/clutter/clutter-backend.c +++ b/clutter/clutter-backend.c @@ -512,6 +512,8 @@ clutter_backend_class_init (ClutterBackendClass *klass) g_type_class_add_private (gobject_class, sizeof (ClutterBackendPrivate)); + klass->stage_window_type = G_TYPE_INVALID; + /** * ClutterBackend::resolution-changed: * @backend: the #ClutterBackend that emitted the signal From b980d2dc17f84b4c5e99f9f850feb3ac47de2439 Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Fri, 4 Nov 2011 18:27:08 +0000 Subject: [PATCH 28/43] */backend: Store the StageWindow implementation type --- clutter/cex100/clutter-backend-cex100.c | 2 ++ clutter/egl/clutter-backend-eglnative.c | 2 ++ clutter/gdk/clutter-backend-gdk.c | 3 +++ clutter/osx/clutter-backend-osx.c | 2 ++ clutter/wayland/clutter-backend-wayland.c | 2 ++ clutter/win32/clutter-backend-win32.c | 10 ++++++---- clutter/x11/clutter-backend-x11.c | 4 ++++ 7 files changed, 21 insertions(+), 4 deletions(-) diff --git a/clutter/cex100/clutter-backend-cex100.c b/clutter/cex100/clutter-backend-cex100.c index 093fb1f54..26848d3a4 100644 --- a/clutter/cex100/clutter-backend-cex100.c +++ b/clutter/cex100/clutter-backend-cex100.c @@ -169,6 +169,8 @@ clutter_backend_cex100_class_init (ClutterBackendCex100Class *klass) gobject_class->dispose = clutter_backend_cex100_dispose; + backend_class->stage_window_type = CLUTTER_TYPE_STAGE_COGL; + backend_class->get_device_manager = clutter_backend_cex100_get_device_manager; backend_class->create_stage = clutter_backend_cex100_create_stage; backend_class->get_display = clutter_backend_cex100_get_display; diff --git a/clutter/egl/clutter-backend-eglnative.c b/clutter/egl/clutter-backend-eglnative.c index e1d052fe4..f9419f4dc 100644 --- a/clutter/egl/clutter-backend-eglnative.c +++ b/clutter/egl/clutter-backend-eglnative.c @@ -129,6 +129,8 @@ clutter_backend_egl_native_class_init (ClutterBackendEglNativeClass *klass) gobject_class->dispose = clutter_backend_egl_native_dispose; + backend_class->stage_window_type = CLUTTER_TYPE_STAGE_COGL; + backend_class->get_device_manager = clutter_backend_egl_native_get_device_manager; backend_class->create_stage = clutter_backend_egl_native_create_stage; } diff --git a/clutter/gdk/clutter-backend-gdk.c b/clutter/gdk/clutter-backend-gdk.c index 38f574091..fdd30a732 100644 --- a/clutter/gdk/clutter-backend-gdk.c +++ b/clutter/gdk/clutter-backend-gdk.c @@ -388,7 +388,10 @@ clutter_backend_gdk_class_init (ClutterBackendGdkClass *klass) gobject_class->dispose = clutter_backend_gdk_dispose; gobject_class->finalize = clutter_backend_gdk_finalize; + backend_class->stage_window_type = CLUTTER_TYPE_STAGE_GDK; + backend_class->post_parse = _clutter_backend_gdk_post_parse; + backend_class->get_features = clutter_backend_gdk_get_features; backend_class->get_device_manager = clutter_backend_gdk_get_device_manager; backend_class->copy_event_data = clutter_backend_gdk_copy_event_data; diff --git a/clutter/osx/clutter-backend-osx.c b/clutter/osx/clutter-backend-osx.c index dae061496..9f7d80c68 100644 --- a/clutter/osx/clutter-backend-osx.c +++ b/clutter/osx/clutter-backend-osx.c @@ -249,6 +249,8 @@ clutter_backend_osx_class_init (ClutterBackendOSXClass *klass) object_class->dispose = clutter_backend_osx_dispose; + backend_class->stage_window_type = CLUTTER_TYPE_STAGE_OSX; + backend_class->post_parse = clutter_backend_osx_post_parse; backend_class->get_features = clutter_backend_osx_get_features; backend_class->create_stage = clutter_backend_osx_create_stage; diff --git a/clutter/wayland/clutter-backend-wayland.c b/clutter/wayland/clutter-backend-wayland.c index 217fbf254..dde234756 100644 --- a/clutter/wayland/clutter-backend-wayland.c +++ b/clutter/wayland/clutter-backend-wayland.c @@ -620,6 +620,8 @@ _clutter_backend_wayland_class_init (ClutterBackendWaylandClass *klass) gobject_class->dispose = clutter_backend_wayland_dispose; gobject_class->finalize = clutter_backend_wayland_finalize; + backend_class->stage_window_type = CLUTTER_TYPE_STAGE_WAYLAND; + backend_class->pre_parse = clutter_backend_wayland_pre_parse; backend_class->post_parse = clutter_backend_wayland_post_parse; backend_class->get_features = clutter_backend_wayland_get_features; diff --git a/clutter/win32/clutter-backend-win32.c b/clutter/win32/clutter-backend-win32.c index 4d5165a13..99b75df17 100644 --- a/clutter/win32/clutter-backend-win32.c +++ b/clutter/win32/clutter-backend-win32.c @@ -236,10 +236,12 @@ clutter_backend_win32_class_init (ClutterBackendWin32Class *klass) gobject_class->dispose = clutter_backend_win32_dispose; gobject_class->finalize = clutter_backend_win32_finalize; - backend_class->init_events = clutter_backend_win32_init_events; - backend_class->create_stage = clutter_backend_win32_create_stage; - backend_class->add_options = clutter_backend_win32_add_options; - backend_class->get_features = clutter_backend_win32_get_features; + backend_class->stage_window_type = CLUTTER_TYPE_STAGE_WIN32; + + backend_class->init_events = clutter_backend_win32_init_events; + backend_class->create_stage = clutter_backend_win32_create_stage; + backend_class->add_options = clutter_backend_win32_add_options; + backend_class->get_features = clutter_backend_win32_get_features; backend_class->get_device_manager = clutter_backend_win32_get_device_manager; } diff --git a/clutter/x11/clutter-backend-x11.c b/clutter/x11/clutter-backend-x11.c index 8e8f1a61a..aea10e97e 100644 --- a/clutter/x11/clutter-backend-x11.c +++ b/clutter/x11/clutter-backend-x11.c @@ -808,14 +808,18 @@ clutter_backend_x11_class_init (ClutterBackendX11Class *klass) gobject_class->dispose = clutter_backend_x11_dispose; gobject_class->finalize = clutter_backend_x11_finalize; + backend_class->stage_window_type = CLUTTER_TYPE_STAGE_X11; + backend_class->pre_parse = _clutter_backend_x11_pre_parse; backend_class->post_parse = _clutter_backend_x11_post_parse; backend_class->add_options = clutter_backend_x11_add_options; backend_class->get_features = clutter_backend_x11_get_features; + backend_class->get_device_manager = clutter_backend_x11_get_device_manager; backend_class->copy_event_data = clutter_backend_x11_copy_event_data; backend_class->free_event_data = clutter_backend_x11_free_event_data; backend_class->translate_event = clutter_backend_x11_translate_event; + backend_class->get_renderer = clutter_backend_x11_get_renderer; backend_class->get_display = clutter_backend_x11_get_display; backend_class->create_stage = clutter_backend_x11_create_stage; From f3c89e82b3ab47b29cf5bf59418ca0f473624c2f Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Fri, 4 Nov 2011 18:50:02 +0000 Subject: [PATCH 29/43] gdk/backend: Fix an invalid chain up --- clutter/gdk/clutter-backend-gdk.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/clutter/gdk/clutter-backend-gdk.c b/clutter/gdk/clutter-backend-gdk.c index fdd30a732..e3d93bfb0 100644 --- a/clutter/gdk/clutter-backend-gdk.c +++ b/clutter/gdk/clutter-backend-gdk.c @@ -178,8 +178,7 @@ _clutter_backend_gdk_post_parse (ClutterBackend *backend, "Gdk Display '%s' opened", gdk_display_get_name (backend_gdk->display)); - return CLUTTER_BACKEND_CLASS (clutter_backend_gdk_parent_class)->post_parse (backend, - error); + return TRUE; } static void From 9c038ebefb88cd052c1dc9448c58d2d5a9a9bfc7 Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Fri, 4 Nov 2011 18:50:46 +0000 Subject: [PATCH 30/43] stage-window: Add :backend and :wrapper properties MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit All StageWindow implementation already have back pointers, but we need a unified API to actually set them from the generic code path; we can use properties on the StageWindow interface — though this requires fixing all backends at the same time, to avoid GObject complaining. --- clutter/clutter-stage-window.c | 19 ++++++++++ clutter/cogl/clutter-stage-cogl.c | 15 ++------ clutter/osx/clutter-stage-osx.c | 46 ++++++++++++++++++++++--- clutter/wayland/clutter-stage-wayland.c | 37 ++++++++++++++++++++ clutter/win32/clutter-stage-win32.c | 35 +++++++++++++++++++ 5 files changed, 135 insertions(+), 17 deletions(-) diff --git a/clutter/clutter-stage-window.c b/clutter/clutter-stage-window.c index 7ca171ee4..1b35103c7 100644 --- a/clutter/clutter-stage-window.c +++ b/clutter/clutter-stage-window.c @@ -15,6 +15,25 @@ G_DEFINE_INTERFACE (ClutterStageWindow, clutter_stage_window, G_TYPE_OBJECT); static void clutter_stage_window_default_init (ClutterStageWindowInterface *iface) { + GParamSpec *pspec; + + pspec = g_param_spec_object ("backend", + "Backend", + "Back pointer to the Backend instance", + CLUTTER_TYPE_BACKEND, + G_PARAM_WRITABLE | + G_PARAM_CONSTRUCT_ONLY | + G_PARAM_STATIC_STRINGS); + g_object_interface_install_property (iface, pspec); + + pspec = g_param_spec_object ("wrapper", + "Wrapper", + "Back pointer to the Stage actor", + CLUTTER_TYPE_STAGE, + G_PARAM_WRITABLE | + G_PARAM_CONSTRUCT_ONLY | + G_PARAM_STATIC_STRINGS); + g_object_interface_install_property (iface, pspec); } ClutterActor * diff --git a/clutter/cogl/clutter-stage-cogl.c b/clutter/cogl/clutter-stage-cogl.c index 98af26972..87b6035be 100644 --- a/clutter/cogl/clutter-stage-cogl.c +++ b/clutter/cogl/clutter-stage-cogl.c @@ -565,19 +565,8 @@ _clutter_stage_cogl_class_init (ClutterStageCoglClass *klass) gobject_class->set_property = clutter_stage_cogl_set_property; - g_object_class_install_property (gobject_class, PROP_WRAPPER, - g_param_spec_object ("wrapper", - "Wrapper", - "ClutterStage wrapping this native stage", - CLUTTER_TYPE_STAGE, - CLUTTER_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY)); - - g_object_class_install_property (gobject_class, PROP_BACKEND, - g_param_spec_object ("backend", - "ClutterBackend", - "The Clutter backend singleton", - CLUTTER_TYPE_BACKEND, - CLUTTER_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY)); + g_object_class_override_property (gobject_class, PROP_WRAPPER, "wrapper"); + g_object_class_override_property (gobject_class, PROP_BACKEND, "backend"); } static void diff --git a/clutter/osx/clutter-stage-osx.c b/clutter/osx/clutter-stage-osx.c index f19dbfcb8..8c56e3d1e 100644 --- a/clutter/osx/clutter-stage-osx.c +++ b/clutter/osx/clutter-stage-osx.c @@ -32,6 +32,14 @@ #import +enum +{ + PROP_0, + + PROP_BACKEND, + PROP_WRAPPER +}; + static void clutter_stage_window_iface_init (ClutterStageWindowIface *iface); #define clutter_stage_osx_get_type _clutter_stage_osx_get_type @@ -608,15 +616,17 @@ _clutter_stage_osx_new (ClutterBackend *backend, { ClutterStageOSX *self; - self = g_object_new (CLUTTER_TYPE_STAGE_OSX, NULL); - self->backend = backend; - self->wrapper = wrapper; + self = g_object_new (CLUTTER_TYPE_STAGE_OSX, + "backend", backend, + "wrapper", wrapper, + NULL); + self->isHiding = false; self->haveRealized = false; self->view = NULL; self->window = NULL; - return CLUTTER_STAGE_WINDOW(self); + return CLUTTER_STAGE_WINDOW (self); } /*************************************************************************/ @@ -628,6 +638,30 @@ clutter_stage_osx_init (ClutterStageOSX *self) self->acceptFocus = TRUE; } +static void +clutter_stage_osx_set_property (GObject *gobject, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + ClutterStageOSX *self = CLUTTER_STAGE_OSX (gobject); + + switch (prop_id) + { + case PROP_BACKEND: + self->backend = g_value_get_object (value); + break; + + case PROP_WRAPPER: + self->wrapper = g_value_get_object (value); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec); + break; + } +} + static void clutter_stage_osx_finalize (GObject *gobject) { @@ -645,6 +679,10 @@ clutter_stage_osx_class_init (ClutterStageOSXClass *klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + gobject_class->set_property = clutter_stage_osx_set_property; gobject_class->finalize = clutter_stage_osx_finalize; gobject_class->dispose = clutter_stage_osx_dispose; + + g_object_class_override_property (gobject_class, PROP_BACKEND, "backend"); + g_object_class_override_property (gobject_class, PROP_WRAPPER, "wrapper"); } diff --git a/clutter/wayland/clutter-stage-wayland.c b/clutter/wayland/clutter-stage-wayland.c index 427685155..022745ab9 100644 --- a/clutter/wayland/clutter-stage-wayland.c +++ b/clutter/wayland/clutter-stage-wayland.c @@ -58,6 +58,14 @@ wayland_swap_buffers (ClutterStageWayland *stage_wayland); static void clutter_stage_window_iface_init (ClutterStageWindowIface *iface); +enum +{ + PROP_0, + + PROP_BACKEND, + PROP_WRAPPER +}; + G_DEFINE_TYPE_WITH_CODE (ClutterStageWayland, _clutter_stage_wayland, G_TYPE_OBJECT, @@ -427,9 +435,38 @@ clutter_stage_window_iface_init (ClutterStageWindowIface *iface) iface->ignoring_redraw_clips = clutter_stage_wayland_ignoring_redraw_clips; } +static void +clutter_stage_wayland_set_property (GObject *gobject, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + ClutterStageWayland *self = CLUTTER_STAGE_WAYLAND (gobject); + + switch (prop_id) + { + case PROP_BACKEND: + self->backend = g_value_get_object (value); + break; + + case PROP_WRAPPER: + self->wrapper = g_value_get_object (value); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec); + } +} + static void _clutter_stage_wayland_class_init (ClutterStageWaylandClass *klass) { + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + + gobject_class->set_property = clutter_stage_wayland_set_property; + + g_object_class_override_property (gobject_class, PROP_BACKEND, "backend"); + g_object_class_override_property (gobject_class, PROP_WRAPPER, "wrapper"); } static void diff --git a/clutter/win32/clutter-stage-win32.c b/clutter/win32/clutter-stage-win32.c index f57f73be6..e89c81769 100644 --- a/clutter/win32/clutter-stage-win32.c +++ b/clutter/win32/clutter-stage-win32.c @@ -42,6 +42,14 @@ static void clutter_stage_window_iface_init (ClutterStageWindowIface *iface); +enum +{ + PROP_0, + + PROP_BACKEND, + PROP_WRAPPER +}; + G_DEFINE_TYPE_WITH_CODE (ClutterStageWin32, clutter_stage_win32, G_TYPE_OBJECT, @@ -544,6 +552,29 @@ clutter_stage_win32_get_active_framebuffer (ClutterStageWindow *stage_window) return COGL_FRAMEBUFFER (stage_win32->onscreen); } +static void +clutter_stage_win32_set_property (GObject *gobject, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + ClutterStageWin32 *self = CLUTTER_STAGE_WIN32 (gobject); + + switch (prop_id) + { + case PROP_BACKEND: + self->backend = g_value_get_object (value); + break; + + case PROP_WRAPPER: + self->wrapper = g_value_get_object (value); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec); + } +} + static void clutter_stage_win32_dispose (GObject *gobject) { @@ -569,7 +600,11 @@ clutter_stage_win32_class_init (ClutterStageWin32Class *klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + gobject_class->set_property = clutter_stage_win32_set_property; gobject_class->dispose = clutter_stage_win32_dispose; + + g_object_class_override_property (gobject_class, PROP_BACKEND, "backend"); + g_object_class_override_property (gobject_class, PROP_WRAPPER, "wrapper"); } static void From 828ca2982f0f7b6974283921d59c65929385da8f Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Fri, 4 Nov 2011 19:00:49 +0000 Subject: [PATCH 31/43] backend: Provide a default create_stage() We can now safely create a ClutterStageWindow in the shared code path, instead of deferring to the backend. --- clutter/clutter-backend.c | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/clutter/clutter-backend.c b/clutter/clutter-backend.c index 9cabfad11..4f9e1e16a 100644 --- a/clutter/clutter-backend.c +++ b/clutter/clutter-backend.c @@ -389,6 +389,37 @@ clutter_backend_real_get_features (ClutterBackend *backend) return flags; } +static ClutterStageWindow * +clutter_backend_real_create_stage (ClutterBackend *backend, + ClutterStage *wrapper, + GError **error) +{ + ClutterBackendClass *klass; + + if (!clutter_feature_available (CLUTTER_FEATURE_STAGE_MULTIPLE)) + { + ClutterStageManager *manager = clutter_stage_manager_get_default (); + + if (clutter_stage_manager_get_default_stage (manager) != NULL) + { + g_set_error (error, CLUTTER_INIT_ERROR, + CLUTTER_INIT_ERROR_BACKEND, + _("The backend of type '%s' does not support " + "creating multiple stages"), + G_OBJECT_TYPE_NAME (backend)); + return NULL; + } + } + + klass = CLUTTER_BACKEND_GET_CLASS (backend); + g_assert (klass->stage_window_type != G_TYPE_INVALID); + + return g_object_new (klass->stage_window_type, + "backend", backend, + "wrapper", wrapper, + NULL); +} + static void clutter_backend_real_redraw (ClutterBackend *backend, ClutterStage *stage) @@ -576,6 +607,7 @@ clutter_backend_class_init (ClutterBackendClass *klass) klass->create_context = clutter_backend_real_create_context; klass->ensure_context = clutter_backend_real_ensure_context; klass->get_features = clutter_backend_real_get_features; + klass->create_stage = clutter_backend_real_create_stage; klass->redraw = clutter_backend_real_redraw; } From cd1e8da07fd437a0368c198a3ee2a16569ce7699 Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Fri, 4 Nov 2011 19:01:32 +0000 Subject: [PATCH 32/43] */backend: Clean up the stage creation Use the default implementation of create_stage() wherever possible. --- clutter/cex100/clutter-backend-cex100.c | 27 ------------------------- clutter/cex100/clutter-backend-cex100.h | 3 --- clutter/egl/clutter-backend-eglnative.c | 27 ------------------------- clutter/egl/clutter-backend-eglnative.h | 3 --- clutter/gdk/clutter-backend-gdk.c | 12 ----------- clutter/win32/clutter-backend-win32.c | 20 ------------------ 6 files changed, 92 deletions(-) diff --git a/clutter/cex100/clutter-backend-cex100.c b/clutter/cex100/clutter-backend-cex100.c index 26848d3a4..8b9b50c5a 100644 --- a/clutter/cex100/clutter-backend-cex100.c +++ b/clutter/cex100/clutter-backend-cex100.c @@ -100,32 +100,6 @@ clutter_backend_cex100_dispose (GObject *gobject) G_OBJECT_CLASS (clutter_backend_cex100_parent_class)->dispose (gobject); } -static ClutterStageWindow * -clutter_backend_cex100_create_stage (ClutterBackend *backend, - ClutterStage *wrapper, - GError **error) -{ - ClutterBackendCex100 *backend_cex100 = CLUTTER_BACKEND_CEX100 (backend); - ClutterStageWindow *stage; - - if (G_UNLIKELY (backend_cex100->stage != NULL)) - { - g_set_error (error, CLUTTER_INIT_ERROR, - CLUTTER_INIT_ERROR_BACKEND, - "The Cex100 backend does not support multiple " - "onscreen windows"); - return backend_cex100->stage; - } - - stage = g_object_new (CLUTTER_TYPE_STAGE_COGL, - "backend", backend, - "wrapper", wrapper, - NULL); - backend_cex100->stage = stage; - - return stage; -} - static CoglDisplay * clutter_backend_cex100_get_display (ClutterBackend *backend, CoglRenderer *renderer, @@ -172,7 +146,6 @@ clutter_backend_cex100_class_init (ClutterBackendCex100Class *klass) backend_class->stage_window_type = CLUTTER_TYPE_STAGE_COGL; backend_class->get_device_manager = clutter_backend_cex100_get_device_manager; - backend_class->create_stage = clutter_backend_cex100_create_stage; backend_class->get_display = clutter_backend_cex100_get_display; } diff --git a/clutter/cex100/clutter-backend-cex100.h b/clutter/cex100/clutter-backend-cex100.h index b55b89aee..2d1fb69b4 100644 --- a/clutter/cex100/clutter-backend-cex100.h +++ b/clutter/cex100/clutter-backend-cex100.h @@ -49,9 +49,6 @@ struct _ClutterBackendCex100 { ClutterBackend parent_instance; - /* main stage singleton */ - ClutterStageWindow *stage; - /* device manager (ie evdev) */ ClutterDeviceManager *device_manager; diff --git a/clutter/egl/clutter-backend-eglnative.c b/clutter/egl/clutter-backend-eglnative.c index f9419f4dc..8d0f1a696 100644 --- a/clutter/egl/clutter-backend-eglnative.c +++ b/clutter/egl/clutter-backend-eglnative.c @@ -95,32 +95,6 @@ clutter_backend_egl_native_dispose (GObject *gobject) G_OBJECT_CLASS (clutter_backend_egl_native_parent_class)->dispose (gobject); } -static ClutterStageWindow * -clutter_backend_egl_native_create_stage (ClutterBackend *backend, - ClutterStage *wrapper, - GError **error) -{ - ClutterBackendEglNative *backend_egl_native = CLUTTER_BACKEND_EGL_NATIVE (backend); - ClutterStageWindow *stage; - - if (G_UNLIKELY (backend_egl_native->stage != NULL)) - { - g_set_error (error, CLUTTER_INIT_ERROR, - CLUTTER_INIT_ERROR_BACKEND, - "The EglNative backend does not support multiple " - "onscreen windows"); - return backend_egl_native->stage; - } - - stage = g_object_new (CLUTTER_TYPE_STAGE_COGL, - "backend", backend, - "wrapper", wrapper, - NULL); - backend_egl_native->stage = stage; - - return stage; -} - static void clutter_backend_egl_native_class_init (ClutterBackendEglNativeClass *klass) { @@ -132,7 +106,6 @@ clutter_backend_egl_native_class_init (ClutterBackendEglNativeClass *klass) backend_class->stage_window_type = CLUTTER_TYPE_STAGE_COGL; backend_class->get_device_manager = clutter_backend_egl_native_get_device_manager; - backend_class->create_stage = clutter_backend_egl_native_create_stage; } static void diff --git a/clutter/egl/clutter-backend-eglnative.h b/clutter/egl/clutter-backend-eglnative.h index 87ff7ee98..7c30d4ad6 100644 --- a/clutter/egl/clutter-backend-eglnative.h +++ b/clutter/egl/clutter-backend-eglnative.h @@ -49,9 +49,6 @@ struct _ClutterBackendEglNative { ClutterBackend parent_instance; - /* main stage singleton */ - ClutterStageWindow *stage; - /* device manager (ie evdev) */ ClutterDeviceManager *device_manager; diff --git a/clutter/gdk/clutter-backend-gdk.c b/clutter/gdk/clutter-backend-gdk.c index e3d93bfb0..14650a31e 100644 --- a/clutter/gdk/clutter-backend-gdk.c +++ b/clutter/gdk/clutter-backend-gdk.c @@ -367,17 +367,6 @@ clutter_backend_gdk_get_display (ClutterBackend *backend, return display; } -static ClutterStageWindow * -clutter_backend_gdk_create_stage (ClutterBackend *backend, - ClutterStage *wrapper, - GError **error) -{ - return g_object_new (CLUTTER_TYPE_STAGE_GDK, - "backend", backend, - "wrapper", wrapper, - NULL); -} - static void clutter_backend_gdk_class_init (ClutterBackendGdkClass *klass) { @@ -398,7 +387,6 @@ clutter_backend_gdk_class_init (ClutterBackendGdkClass *klass) backend_class->get_renderer = clutter_backend_gdk_get_renderer; backend_class->get_display = clutter_backend_gdk_get_display; - backend_class->create_stage = clutter_backend_gdk_create_stage; } static void diff --git a/clutter/win32/clutter-backend-win32.c b/clutter/win32/clutter-backend-win32.c index 99b75df17..cc4fe34e8 100644 --- a/clutter/win32/clutter-backend-win32.c +++ b/clutter/win32/clutter-backend-win32.c @@ -168,25 +168,6 @@ clutter_backend_win32_get_features (ClutterBackend *backend) | CLUTTER_FEATURE_STAGE_CURSOR; } -static ClutterStageWindow * -clutter_backend_win32_create_stage (ClutterBackend *backend, - ClutterStage *wrapper, - GError **error) -{ - ClutterBackendWin32 *backend_win32 = CLUTTER_BACKEND_WIN32 (backend); - ClutterStageWin32 *stage_win32; - ClutterStageWindow *stage; - - stage = g_object_new (CLUTTER_TYPE_STAGE_WIN32, NULL); - - /* copy backend data into the stage */ - stage_win32 = CLUTTER_STAGE_WIN32 (stage); - stage_win32->backend = backend_win32; - stage_win32->wrapper = wrapper; - - return stage; -} - static ClutterDeviceManager * clutter_backend_win32_get_device_manager (ClutterBackend *backend) { @@ -239,7 +220,6 @@ clutter_backend_win32_class_init (ClutterBackendWin32Class *klass) backend_class->stage_window_type = CLUTTER_TYPE_STAGE_WIN32; backend_class->init_events = clutter_backend_win32_init_events; - backend_class->create_stage = clutter_backend_win32_create_stage; backend_class->add_options = clutter_backend_win32_add_options; backend_class->get_features = clutter_backend_win32_get_features; backend_class->get_device_manager = clutter_backend_win32_get_device_manager; From 17c89bd0a0aba8fa400c591b8cc8934f5b8ec901 Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Fri, 4 Nov 2011 19:25:54 +0000 Subject: [PATCH 33/43] backend: Clean up the device manager creation Create the device manager during the event initialization, where it makes sense. This allows us to get rid of the per-backend get_device_manager() virtual function, and just store the DeviceManager pointer into the ClutterBackend structure. --- clutter/cex100/clutter-backend-cex100.c | 25 ------------------ clutter/clutter-backend-private.h | 10 +++++--- clutter/clutter-backend.c | 13 ++++++++++ clutter/clutter-device-manager.c | 7 ++--- clutter/egl/clutter-backend-eglnative.c | 26 ------------------- clutter/evdev/clutter-device-manager-evdev.c | 12 +++------ clutter/gdk/clutter-backend-gdk.c | 25 ++++++------------ clutter/osx/clutter-backend-osx.c | 27 +++----------------- clutter/win32/clutter-backend-win32.c | 19 +------------- clutter/x11/clutter-backend-x11.c | 13 ++-------- 10 files changed, 39 insertions(+), 138 deletions(-) diff --git a/clutter/cex100/clutter-backend-cex100.c b/clutter/cex100/clutter-backend-cex100.c index 8b9b50c5a..264dc0044 100644 --- a/clutter/cex100/clutter-backend-cex100.c +++ b/clutter/cex100/clutter-backend-cex100.c @@ -62,24 +62,6 @@ static guint gdl_n_buffers = CLUTTER_CEX100_TRIPLE_BUFFERING; G_DEFINE_TYPE (ClutterBackendCex100, clutter_backend_cex100, CLUTTER_TYPE_BACKEND); -static ClutterDeviceManager * -clutter_backend_cex100_get_device_manager (ClutterBackend *backend) -{ - ClutterBackendCex100 *backend_cex100 = CLUTTER_BACKEND_CEX100 (backend); - -#ifdef HAVE_EVDEV - if (G_UNLIKELY (backend_cex100->device_manager == NULL)) - { - backend_cex100->device_manager = - g_object_new (CLUTTER_TYPE_DEVICE_MANAGER_EVDEV, - "backend", backend_cex100, - NULL); - } -#endif /* HAVE_EVDEV */ - - return backend_cex100->device_manager; -} - static void clutter_backend_cex100_dispose (GObject *gobject) { @@ -91,12 +73,6 @@ clutter_backend_cex100_dispose (GObject *gobject) backend_cex100->event_timer = NULL; } - if (backend_cex100->device_manager != NULL) - { - g_object_unref (backend_cex100->device_manager); - backend_cex100->device_manager = NULL; - } - G_OBJECT_CLASS (clutter_backend_cex100_parent_class)->dispose (gobject); } @@ -145,7 +121,6 @@ clutter_backend_cex100_class_init (ClutterBackendCex100Class *klass) backend_class->stage_window_type = CLUTTER_TYPE_STAGE_COGL; - backend_class->get_device_manager = clutter_backend_cex100_get_device_manager; backend_class->get_display = clutter_backend_cex100_get_display; } diff --git a/clutter/clutter-backend-private.h b/clutter/clutter-backend-private.h index c9ba24a89..6816bac55 100644 --- a/clutter/clutter-backend-private.h +++ b/clutter/clutter-backend-private.h @@ -39,11 +39,13 @@ typedef struct _ClutterBackendPrivate ClutterBackendPrivate; struct _ClutterBackend { /*< private >*/ - GObject parent_instance; + GObject parent_instance; - CoglRenderer *cogl_renderer; - CoglDisplay *cogl_display; - CoglContext *cogl_context; + CoglRenderer *cogl_renderer; + CoglDisplay *cogl_display; + CoglContext *cogl_context; + + ClutterDeviceManager *device_manager; ClutterBackendPrivate *priv; }; diff --git a/clutter/clutter-backend.c b/clutter/clutter-backend.c index 4f9e1e16a..fe9cba798 100644 --- a/clutter/clutter-backend.c +++ b/clutter/clutter-backend.c @@ -504,6 +504,18 @@ clutter_backend_real_init_events (ClutterBackend *backend) g_error ("Unknown input backend"); } +static ClutterDeviceManager * +clutter_backend_real_get_device_manager (ClutterBackend *backend) +{ + if (G_UNLIKELY (backend->device_manager == NULL)) + { + g_critical ("No device manager available, expect broken input"); + return NULL; + } + + return backend->device_manager; +} + static gboolean clutter_backend_real_translate_event (ClutterBackend *backend, gpointer native, @@ -603,6 +615,7 @@ clutter_backend_class_init (ClutterBackendClass *klass) klass->font_changed = clutter_backend_real_font_changed; klass->init_events = clutter_backend_real_init_events; + klass->get_device_manager = clutter_backend_real_get_device_manager; klass->translate_event = clutter_backend_real_translate_event; klass->create_context = clutter_backend_real_create_context; klass->ensure_context = clutter_backend_real_ensure_context; diff --git a/clutter/clutter-device-manager.c b/clutter/clutter-device-manager.c index cf0d4fca0..fc3227884 100644 --- a/clutter/clutter-device-manager.c +++ b/clutter/clutter-device-manager.c @@ -200,12 +200,9 @@ clutter_device_manager_init (ClutterDeviceManager *self) ClutterDeviceManager * clutter_device_manager_get_default (void) { - ClutterBackendClass *klass; + ClutterBackend *backend = clutter_get_default_backend (); - klass = CLUTTER_BACKEND_GET_CLASS (clutter_get_default_backend ()); - g_assert (klass->get_device_manager != NULL); - - return klass->get_device_manager (clutter_get_default_backend ()); + return backend->device_manager; } /** diff --git a/clutter/egl/clutter-backend-eglnative.c b/clutter/egl/clutter-backend-eglnative.c index 8d0f1a696..35ba3df39 100644 --- a/clutter/egl/clutter-backend-eglnative.c +++ b/clutter/egl/clutter-backend-eglnative.c @@ -57,24 +57,6 @@ G_DEFINE_TYPE (ClutterBackendEglNative, clutter_backend_egl_native, CLUTTER_TYPE_BACKEND); -static ClutterDeviceManager * -clutter_backend_egl_native_get_device_manager (ClutterBackend *backend) -{ - ClutterBackendEglNative *backend_egl_native = CLUTTER_BACKEND_EGL_NATIVE (backend); - -#ifdef HAVE_EVDEV - if (G_UNLIKELY (backend_egl_native->device_manager == NULL)) - { - backend_egl_native->device_manager = - g_object_new (CLUTTER_TYPE_DEVICE_MANAGER_EVDEV, - "backend", backend_egl_native, - NULL); - } -#endif - - return backend_egl_native->device_manager; -} - static void clutter_backend_egl_native_dispose (GObject *gobject) { @@ -86,12 +68,6 @@ clutter_backend_egl_native_dispose (GObject *gobject) backend_egl_native->event_timer = NULL; } - if (backend_egl_native->device_manager != NULL) - { - g_object_unref (backend_egl_native->device_manager); - backend_egl_native->device_manager = NULL; - } - G_OBJECT_CLASS (clutter_backend_egl_native_parent_class)->dispose (gobject); } @@ -104,8 +80,6 @@ clutter_backend_egl_native_class_init (ClutterBackendEglNativeClass *klass) gobject_class->dispose = clutter_backend_egl_native_dispose; backend_class->stage_window_type = CLUTTER_TYPE_STAGE_COGL; - - backend_class->get_device_manager = clutter_backend_egl_native_get_device_manager; } static void diff --git a/clutter/evdev/clutter-device-manager-evdev.c b/clutter/evdev/clutter-device-manager-evdev.c index edc01bf58..26079f1d2 100644 --- a/clutter/evdev/clutter-device-manager-evdev.c +++ b/clutter/evdev/clutter-device-manager-evdev.c @@ -847,20 +847,14 @@ clutter_device_manager_evdev_init (ClutterDeviceManagerEvdev *self) self->priv = CLUTTER_DEVICE_MANAGER_EVDEV_GET_PRIVATE (self); } -/* - * _clutter_events_evdev_init() and _clutter_events_evdev_uninit() are the two - * symbol to use the evdev event backend from the EGL backend - */ - void _clutter_events_evdev_init (ClutterBackend *backend) { - ClutterDeviceManager *dummy G_GNUC_UNUSED; - CLUTTER_NOTE (EVENT, "Initializing evdev backend"); - /* we need to create the device manager here */ - dummy = clutter_device_manager_get_default (); + backend->device_manager = g_object_new (CLUTTER_TYPE_DEVICE_MANAGER_EVDEV, + "backend", backend, + NULL); } void diff --git a/clutter/gdk/clutter-backend-gdk.c b/clutter/gdk/clutter-backend-gdk.c index 14650a31e..00e5599a9 100644 --- a/clutter/gdk/clutter-backend-gdk.c +++ b/clutter/gdk/clutter-backend-gdk.c @@ -191,8 +191,16 @@ gdk_event_handler (GdkEvent *event, void _clutter_backend_gdk_events_init (ClutterBackend *backend) { + ClutterBackendGdk *backend_gdk = CLUTTER_BACKEND_GDK (backend); + CLUTTER_NOTE (EVENT, "initialising the event loop"); + backend->device_manager = + g_object_new (CLUTTER_TYPE_DEVICE_MANAGER_GDK, + "backend", backend, + "gdk-display", backend_gdk->display, + NULL); + if (!disable_event_retrieval) gdk_event_handler_set (gdk_event_handler, NULL, NULL); } @@ -249,22 +257,6 @@ clutter_backend_gdk_free_event_data (ClutterBackend *backend, gdk_event_free (gdk_event); } -static ClutterDeviceManager * -clutter_backend_gdk_get_device_manager (ClutterBackend *backend) -{ - ClutterBackendGdk *backend_gdk = CLUTTER_BACKEND_GDK (backend); - - if (G_UNLIKELY (backend_gdk->device_manager == NULL)) - { - backend_gdk->device_manager = g_object_new (CLUTTER_TYPE_DEVICE_MANAGER_GDK, - "backend", backend_gdk, - "gdk-display", backend_gdk->display, - NULL); - } - - return backend_gdk->device_manager; -} - static CoglRenderer * clutter_backend_gdk_get_renderer (ClutterBackend *backend, GError **error) @@ -381,7 +373,6 @@ clutter_backend_gdk_class_init (ClutterBackendGdkClass *klass) backend_class->post_parse = _clutter_backend_gdk_post_parse; backend_class->get_features = clutter_backend_gdk_get_features; - backend_class->get_device_manager = clutter_backend_gdk_get_device_manager; backend_class->copy_event_data = clutter_backend_gdk_copy_event_data; backend_class->free_event_data = clutter_backend_gdk_free_event_data; diff --git a/clutter/osx/clutter-backend-osx.c b/clutter/osx/clutter-backend-osx.c index 9f7d80c68..020a0ae3a 100644 --- a/clutter/osx/clutter-backend-osx.c +++ b/clutter/osx/clutter-backend-osx.c @@ -94,27 +94,6 @@ clutter_backend_osx_create_stage (ClutterBackend *backend, return impl; } -static inline void -clutter_backend_osx_create_device_manager (ClutterBackendOSX *backend_osx) -{ - if (backend_osx->device_manager != NULL) - return; - - backend_osx->device_manager = g_object_new (CLUTTER_TYPE_DEVICE_MANAGER_OSX, - "backend", CLUTTER_BACKEND(backend_osx), - NULL); -} - -static ClutterDeviceManager * -clutter_backend_osx_get_device_manager (ClutterBackend *backend) -{ - ClutterBackendOSX *backend_osx = CLUTTER_BACKEND_OSX (backend); - - clutter_backend_osx_create_device_manager (backend_osx); - - return backend_osx->device_manager; -} - void _clutter_backend_osx_events_init (ClutterBackend *backend) { @@ -125,7 +104,10 @@ _clutter_backend_osx_events_init (ClutterBackend *backend) CLUTTER_NOTE (BACKEND, "init_events"); - clutter_backend_osx_create_device_manager (backend_osx); + backend->device_manager = backend_osx->device_manager = + g_object_new (CLUTTER_TYPE_DEVICE_MANAGER_OSX, + "backend", CLUTTER_BACKEND(backend_osx), + NULL); _clutter_osx_event_loop_init (); } @@ -256,5 +238,4 @@ clutter_backend_osx_class_init (ClutterBackendOSXClass *klass) backend_class->create_stage = clutter_backend_osx_create_stage; backend_class->create_context = clutter_backend_osx_create_context; backend_class->ensure_context = clutter_backend_osx_ensure_context; - backend_class->get_device_manager = clutter_backend_osx_get_device_manager; } diff --git a/clutter/win32/clutter-backend-win32.c b/clutter/win32/clutter-backend-win32.c index cc4fe34e8..608a66e70 100644 --- a/clutter/win32/clutter-backend-win32.c +++ b/clutter/win32/clutter-backend-win32.c @@ -59,7 +59,7 @@ clutter_backend_win32_init_events (ClutterBackend *backend) CLUTTER_NOTE (EVENT, "initialising the event loop"); - backend_win32->device_manager = + backend->device_manager = g_object_new (CLUTTER_TYPE_DEVICE_MANAGER_WIN32, "backend", backend_win32, NULL); @@ -168,22 +168,6 @@ clutter_backend_win32_get_features (ClutterBackend *backend) | CLUTTER_FEATURE_STAGE_CURSOR; } -static ClutterDeviceManager * -clutter_backend_win32_get_device_manager (ClutterBackend *backend) -{ - ClutterBackendWin32 *backend_win32 = CLUTTER_BACKEND_WIN32 (backend); - - if (G_UNLIKELY (backend_win32->device_manager == NULL)) - { - backend_win32->device_manager = - g_object_new (CLUTTER_TYPE_DEVICE_MANAGER_WIN32, - "backend", backend_win32, - NULL); - } - - return backend_win32->device_manager; -} - /** * clutter_win32_disable_event_retrieval * @@ -222,7 +206,6 @@ clutter_backend_win32_class_init (ClutterBackendWin32Class *klass) backend_class->init_events = clutter_backend_win32_init_events; backend_class->add_options = clutter_backend_win32_add_options; backend_class->get_features = clutter_backend_win32_get_features; - backend_class->get_device_manager = clutter_backend_win32_get_device_manager; } static void diff --git a/clutter/x11/clutter-backend-x11.c b/clutter/x11/clutter-backend-x11.c index aea10e97e..acafccbbb 100644 --- a/clutter/x11/clutter-backend-x11.c +++ b/clutter/x11/clutter-backend-x11.c @@ -277,6 +277,8 @@ clutter_backend_x11_create_device_manager (ClutterBackendX11 *backend_x11) } backend = CLUTTER_BACKEND (backend_x11); + backend->device_manager = backend_x11->device_manager; + translator = CLUTTER_EVENT_TRANSLATOR (backend_x11->device_manager); _clutter_backend_add_event_translator (backend, translator); } @@ -589,16 +591,6 @@ clutter_backend_x11_free_event_data (ClutterBackend *backend, _clutter_event_x11_free (event_x11); } -static ClutterDeviceManager * -clutter_backend_x11_get_device_manager (ClutterBackend *backend) -{ - ClutterBackendX11 *backend_x11 = CLUTTER_BACKEND_X11 (backend); - - clutter_backend_x11_create_device_manager (backend_x11); - - return backend_x11->device_manager; -} - static void update_last_event_time (ClutterBackendX11 *backend_x11, XEvent *xevent) @@ -815,7 +807,6 @@ clutter_backend_x11_class_init (ClutterBackendX11Class *klass) backend_class->add_options = clutter_backend_x11_add_options; backend_class->get_features = clutter_backend_x11_get_features; - backend_class->get_device_manager = clutter_backend_x11_get_device_manager; backend_class->copy_event_data = clutter_backend_x11_copy_event_data; backend_class->free_event_data = clutter_backend_x11_free_event_data; backend_class->translate_event = clutter_backend_x11_translate_event; From 7472c07c41db28591da46b3e437fc97b799787a2 Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Fri, 4 Nov 2011 19:49:45 +0000 Subject: [PATCH 34/43] build: Clean up the configuration summary List the input backends, and remove the EGL backend options. --- configure.ac | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/configure.ac b/configure.ac index 7ff01ff8b..b66ccc720 100644 --- a/configure.ac +++ b/configure.ac @@ -192,8 +192,10 @@ dnl ======================================================================== FLAVOUR_LIBS="" FLAVOUR_CFLAGS="" CLUTTER_BACKENDS="" +CLUTTER_INPUT_BACKENDS="" experimental_backend=no +experimental_input_backend=no # base dependencies for core CLUTTER_BASE_PC_FILES="cogl-1.0 >= $COGL_REQ_VERSION cairo-gobject >= $CAIRO_REQ_VERSION atk >= $ATK_REQ_VERSION pangocairo >= $PANGO_REQ_VERSION cogl-pango-1.0 json-glib-1.0 >= $JSON_GLIB_REQ_VERSION" @@ -257,6 +259,7 @@ dnl Per-backend rules AS_IF([test "x$enable_x11" = "xyes"], [ CLUTTER_BACKENDS="$CLUTTER_BACKENDS x11" + CLUTTER_INPUT_BACKENDS="$CLUTTER_INPUT_BACKENDS x11" SUPPORT_X11=1 SUPPORT_GLX=1 @@ -291,6 +294,7 @@ AS_IF([test "x$enable_x11" = "xyes"], AS_IF([test "x$enable_gdk" = "xyes"], [ CLUTTER_BACKENDS="$CLUTTER_BACKENDS gdk" + CLUTTER_INPUT_BACKENDS="$CLUTTER_INPUT_BACKENDS gdk" SUPPORT_GDK=1 SUPPORT_COGL=1 @@ -321,6 +325,8 @@ AS_IF([test "x$enable_cex100" = "xyes"], [ CLUTTER_BACKENDS="$CLUTTER_BACKENDS cex100" + experimental_backend="yes" + SUPPORT_COGL=1 SUPPORT_EGL_PLATFORM_GDL=1 @@ -353,6 +359,8 @@ AS_IF([test "x$enable_egl" = "xyes"], [ CLUTTER_BACKENDS="$CLUTTER_BACKENDS egl" + experimental_backend="yes" + SUPPORT_EGL=1 SUPPORT_COGL=1 @@ -374,6 +382,7 @@ AS_IF([test "x$enable_egl" = "xyes"], AS_IF([test "x$enable_osx" = "xyes"], [ CLUTTER_BACKENDS="$CLUTTER_BACKENDS osx" + CLUTTER_INPUT_BACKENDS="$CLUTTER_INPUT_BACKENDS osx" AC_DEFINE([HAVE_CLUTTER_OSX], [1], [Have the OSX backend]) @@ -385,6 +394,7 @@ AS_IF([test "x$enable_osx" = "xyes"], AS_IF([test "x$enable_win32" = "xyes"], [ CLUTTER_BACKENDS="$CLUTTER_BACKENDS win32" + CLUTTER_INPUT_BACKENDS="$CLUTTER_INPUT_BACKENDS win32" AC_DEFINE([HAVE_CLUTTER_WIN32], [1], [Have the Win32 backend]) @@ -417,6 +427,8 @@ AS_IF([test "x$enable_tslib" = "xyes"], PKG_CHECK_MODULES(TSLIB, [tslib-1.0], [have_tslib=yes], [have_tslib=no]) AS_IF([test "x$have_tslib" = "xyes"], [ + CLUTTER_INPUT_BACKENDS="$CLUTTER_INPUT_BACKENDS tslib" + experimental_input_backend="yes" AC_DEFINE([HAVE_TSLIB], [1], [Have tslib for touchscreen handling]) SUPPORT_TSLIB=1 ]) @@ -427,6 +439,8 @@ AS_IF([test "x$enable_evdev" = "xyes"], PKG_CHECK_MODULES(EVDEV, [gudev-1.0 xkbcommon], [have_evdev=yes], [have_evdev=no]) AS_IF([test "x$have_evdev" = "xyes"], [ + CLUTTER_INPUT_BACKENDS="$CLUTTER_INPUT_BACKENDS evdev" + experimental_input_backend="yes" AC_DEFINE([HAVE_EVDEV], [1], [Have evdev support for input handling]) SUPPORT_EVDEV=1 ]) @@ -461,6 +475,9 @@ dnl strip leading spaces CLUTTER_BACKENDS=${CLUTTER_BACKENDS#* } AC_SUBST(CLUTTER_BACKENDS) +CLUTTER_INPUT_BACKENDS=${CLUTTER_INPUT_BACKENDS#* } +AC_SUBST(CLUTTER_INPUT_BACKENDS) + AC_CACHE_SAVE dnl === Clutter configuration ================================================= @@ -1075,6 +1092,12 @@ else echo " Windowing systems: ${CLUTTER_BACKENDS} (WARNING: Experimental backends enabled)" fi +if test "x$experimental_input_backend" = "xno"; then +echo " Input backends: ${CLUTTER_INPUT_BACKENDS}" +else +echo " Input backends: ${CLUTTER_INPUT_BACKENDS} (WARNING: Experimental backends enabled)" +fi + if test "x$SUPPORT_X11" = "x1"; then echo "" echo " - X11 backend options:" @@ -1082,12 +1105,10 @@ echo " Enabled extensions: ${X11_EXTS}" echo " Build X11-specific tests: ${x11_tests}" fi -if test "x$SUPPORT_EGL" = "x1"; then +if test "x$SUPPORT_CEX100" = "x1"; then echo "" -echo " - EGL backend options:" -echo " Enable TSLib: ${have_tslib}" -echo " Enable evdev: ${have_evdev}" -echo " Enable GDL: ${have_gdl}" +echo " - CEx100 backend options:" +echo " libGDL include prefix: ${CLUTTER_CEX100_LIBGDL_PREFIX}" fi echo "" From 88b27beea465a6e790ad78ce7ca3a07e8521f7db Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Mon, 7 Nov 2011 14:44:37 +0000 Subject: [PATCH 35/43] wayland/backend: Remove create_stage() The create_stage() implementation in ClutterBackendWayland isn't doing anything special, so we can fall back to the default one. --- clutter/wayland/clutter-backend-wayland.c | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/clutter/wayland/clutter-backend-wayland.c b/clutter/wayland/clutter-backend-wayland.c index dde234756..4ab31a906 100644 --- a/clutter/wayland/clutter-backend-wayland.c +++ b/clutter/wayland/clutter-backend-wayland.c @@ -592,24 +592,6 @@ clutter_backend_wayland_get_features (ClutterBackend *backend) return flags; } -static ClutterStageWindow * -clutter_backend_wayland_create_stage (ClutterBackend *backend, - ClutterStage *wrapper, - GError **error) -{ - ClutterBackendWayland *backend_wayland = CLUTTER_BACKEND_WAYLAND (backend); - ClutterStageWindow *stage; - ClutterStageWayland *stage_wayland; - - stage = g_object_new (CLUTTER_TYPE_STAGE_WAYLAND, NULL); - - stage_wayland = CLUTTER_STAGE_WAYLAND (stage); - stage_wayland->backend = backend_wayland; - stage_wayland->wrapper = wrapper; - - return stage; -} - static void _clutter_backend_wayland_class_init (ClutterBackendWaylandClass *klass) { @@ -625,7 +607,6 @@ _clutter_backend_wayland_class_init (ClutterBackendWaylandClass *klass) backend_class->pre_parse = clutter_backend_wayland_pre_parse; backend_class->post_parse = clutter_backend_wayland_post_parse; backend_class->get_features = clutter_backend_wayland_get_features; - backend_class->create_stage = clutter_backend_wayland_create_stage; backend_class->create_context = clutter_backend_wayland_create_context; backend_class->redraw = clutter_backend_wayland_redraw; } From 6d68ac2e8bf6f1210c7692748e27c989213e6ba7 Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Mon, 7 Nov 2011 14:48:48 +0000 Subject: [PATCH 36/43] osx: Clean up the backend implementation Instead of implementing create_stage() and a constructor for ClutterStageOSX, we can use the default implementations in ClutterBackend, and spare us some code duplication. --- clutter/osx/clutter-backend-osx.c | 27 ++++--------------------- clutter/osx/clutter-stage-osx.c | 33 +++++++++---------------------- clutter/osx/clutter-stage-osx.h | 3 --- 3 files changed, 13 insertions(+), 50 deletions(-) diff --git a/clutter/osx/clutter-backend-osx.c b/clutter/osx/clutter-backend-osx.c index 020a0ae3a..be7d75e39 100644 --- a/clutter/osx/clutter-backend-osx.c +++ b/clutter/osx/clutter-backend-osx.c @@ -71,27 +71,8 @@ clutter_backend_osx_post_parse (ClutterBackend *backend, static ClutterFeatureFlags clutter_backend_osx_get_features (ClutterBackend *backend) { - return CLUTTER_FEATURE_STAGE_MULTIPLE|CLUTTER_FEATURE_STAGE_USER_RESIZE; -} - -static ClutterStageWindow* -clutter_backend_osx_create_stage (ClutterBackend *backend, - ClutterStage *wrapper, - GError **error) -{ - ClutterStageWindow *impl; - - CLUTTER_OSX_POOL_ALLOC(); - - impl = _clutter_stage_osx_new (backend, wrapper); - - CLUTTER_NOTE (BACKEND, "create_stage: wrapper=%p - impl=%p", - wrapper, - impl); - - CLUTTER_OSX_POOL_RELEASE(); - - return impl; + return CLUTTER_FEATURE_STAGE_MULTIPLE + | CLUTTER_FEATURE_STAGE_USER_RESIZE; } void @@ -127,7 +108,7 @@ clutter_backend_osx_create_context (ClutterBackend *backend, */ NSOpenGLPixelFormatAttribute attrs[] = { NSOpenGLPFADoubleBuffer, - NSOpenGLPFADepthSize, 24, + NSOpenGLPFADepthSize, 32, NSOpenGLPFAStencilSize, 8, 0 }; @@ -174,6 +155,7 @@ clutter_backend_osx_ensure_context (ClutterBackend *backend, g_assert (CLUTTER_IS_STAGE_OSX (impl)); stage_osx = CLUTTER_STAGE_OSX (impl); + [backend_osx->context clearDrawable]; [backend_osx->context setView:stage_osx->view]; [backend_osx->context makeCurrentContext]; } @@ -235,7 +217,6 @@ clutter_backend_osx_class_init (ClutterBackendOSXClass *klass) backend_class->post_parse = clutter_backend_osx_post_parse; backend_class->get_features = clutter_backend_osx_get_features; - backend_class->create_stage = clutter_backend_osx_create_stage; backend_class->create_context = clutter_backend_osx_create_context; backend_class->ensure_context = clutter_backend_osx_ensure_context; } diff --git a/clutter/osx/clutter-stage-osx.c b/clutter/osx/clutter-stage-osx.c index 8c56e3d1e..c93c066c4 100644 --- a/clutter/osx/clutter-stage-osx.c +++ b/clutter/osx/clutter-stage-osx.c @@ -128,7 +128,7 @@ clutter_stage_osx_get_wrapper (ClutterStageWindow *stage_window); - (NSSize) windowWillResize:(NSWindow *) sender toSize:(NSSize) frameSize { - if ( clutter_stage_get_user_resizable (self->stage_osx->wrapper) ) + if (clutter_stage_get_user_resizable (self->stage_osx->wrapper)) { guint min_width, min_height; clutter_stage_get_minimum_size (self->stage_osx->wrapper, @@ -143,7 +143,7 @@ clutter_stage_osx_get_wrapper (ClutterStageWindow *stage_window); - (void)windowDidChangeScreen:(NSNotification *)notification { - clutter_stage_ensure_redraw (CLUTTER_STAGE(self->stage_osx->wrapper)); + clutter_stage_ensure_redraw (CLUTTER_STAGE (self->stage_osx->wrapper)); } @end @@ -203,8 +203,8 @@ clutter_stage_osx_get_wrapper (ClutterStageWindow *stage_window); stage_osx->requisition_width = [self bounds].size.width; stage_osx->requisition_height = [self bounds].size.height; clutter_actor_set_size (CLUTTER_ACTOR (self->stage_osx->wrapper), - (int)[self bounds].size.width, - (int)[self bounds].size.height); + stage_osx->requisition_width, + stage_osx->requisition_height); [self removeTrackingRect:tracking_rect]; tracking_rect = [self addTrackingRect:[self bounds] @@ -609,26 +609,6 @@ clutter_stage_window_iface_init (ClutterStageWindowIface *iface) iface->redraw = clutter_stage_osx_redraw; } -/*************************************************************************/ -ClutterStageWindow * -_clutter_stage_osx_new (ClutterBackend *backend, - ClutterStage *wrapper) -{ - ClutterStageOSX *self; - - self = g_object_new (CLUTTER_TYPE_STAGE_OSX, - "backend", backend, - "wrapper", wrapper, - NULL); - - self->isHiding = false; - self->haveRealized = false; - self->view = NULL; - self->window = NULL; - - return CLUTTER_STAGE_WINDOW (self); -} - /*************************************************************************/ static void clutter_stage_osx_init (ClutterStageOSX *self) @@ -636,6 +616,11 @@ clutter_stage_osx_init (ClutterStageOSX *self) self->requisition_width = 640; self->requisition_height = 480; self->acceptFocus = TRUE; + + self->isHiding = false; + self->haveRealized = false; + self->view = NULL; + self->window = NULL; } static void diff --git a/clutter/osx/clutter-stage-osx.h b/clutter/osx/clutter-stage-osx.h index 6c4bad7b2..be1f338bd 100644 --- a/clutter/osx/clutter-stage-osx.h +++ b/clutter/osx/clutter-stage-osx.h @@ -82,9 +82,6 @@ struct _ClutterStageOSXClass GType _clutter_stage_osx_get_type (void) G_GNUC_CONST; -ClutterStageWindow * _clutter_stage_osx_new (ClutterBackend *backend, - ClutterStage *wrapper); - G_END_DECLS #endif /* __CLUTTER_STAGE_OSX_H__ */ From 89644ae0488951015e44e864a3cc6840c207357c Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Mon, 7 Nov 2011 19:06:22 +0000 Subject: [PATCH 37/43] docs: Update the release notes in the README --- README.in | 79 ++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 69 insertions(+), 10 deletions(-) diff --git a/README.in b/README.in index 3a10eaec9..8d2c4668f 100644 --- a/README.in +++ b/README.in @@ -16,7 +16,7 @@ Clutter currently requires: • Cairo ≥ @CAIRO_REQ_VERSION@ • PangoCairo ≥ @PANGO_REQ_VERSION@ -On X11, Clutter depends on the following extensions +When building the X11 backend, Clutter depends on the following extensions: • XComposite ≥ @XCOMPOSITE_REQ_VERSION@ • XDamage @@ -25,6 +25,19 @@ On X11, Clutter depends on the following extensions • XInput (1.x or 2.x) • XKB +When building the Wayland backend, Clutter also depends on: + + • wayland-client + • xkbcommon + +When building the GDK backend, Clutter also depends on: + + • gdk-3.0 > @GDK_REQ_VERSION@ + +When building the CEx100 backend, Clutter also depends on: + + • libgdl + If you are building the API reference you will also need: • GTK-Doc ≥ @GTK_DOC_REQ_VERSION@ @@ -109,7 +122,7 @@ See also the wiki page: Clutter has additional command line options for the configure script: - --enable-debug=[no/minimum/yes/error] + --enable-debug=[no/minimum/yes] Controls Clutter debugging level: yes: @@ -170,19 +183,19 @@ Clutter has additional command line options for the configure script: Enable the GDK backend. (default=check) --enable-wayland-backend=[yes/no] - Enable the Wayland client backend. (default=no) + Enable the Wayland client backend. (default=no) [EXPERIMENTAL] + + --enable-cex100-backend=[yes/no] + Enable the CEx100 platform backend. (default=no) [EXPERIMENTAL] --enable-egl-backend=[yes/no] Enable the EGL framebuffer backend. (default=no) - --with-tslib=[yes/no] - Use TSLib for the input events. (default=yes) + --enable-tslib-input=[yes/no] + Enable the TSLib input backend. (default=no) [EXPERIMENTAL] - --with-evdev=[yes/no] - Use evdev for the input events. (default=yes) - - --with-gdl=[yes/no] - Use libgdl for CEx100 platforms. (default=no) + --enable-evdev-input=[yes/no/check] + Enable the evdev input backend. (default=check) [EXPERIMENTAL] See also the INSTALL file generated by autotools for further information. @@ -273,6 +286,52 @@ Relevant information for developers with existing Clutter applications wanting to port to newer releases (see NEWS for general information on new features). +Release Notes for Clutter 1.10 +------------------------------------------------------------------------------- + +• Clutter can support multiple backends in the same shared library. Only one + windowing or input backend can be used at run time. As a result of this + change, the shared library name used by Clutter has changed from: + + libclutter--.so + + to: + + libclutter-.so + + The pkg-config file has been updated accordingly. Until the next major API + break, Clutter will ship compatibility links for all the previous "flavours" + that were available in versions < 1.10; this allows applications dynamically + linking against Clutter, or using dlopen(), to keep working. For libraries + and applications dynamically linking against Clutter, though, it is still + recommended to recompile to make sure that the most recent version is being + used. Language bindings using GObject Introspection will automatically use + the new shared library without requiring any change. + +• The windowing system backend for the CE3100 and CE4100 platforms using the + libgdl library is now implemented as a separate backend instance, instead + of being a sub-flavour of the EGL native framebuffer backend. This change + introduces a new header file, under $includedir/clutter-1.0/clutter/cex100, + which should be included to access the CEx100-specific API. The API and + ABI of the platform API has not been changed, though it should still be + considered experimental. + +• As of 1.10 it is not necessary any more to call clutter_threads_init() to + initialize threading support in Clutter; after the changes in GLib 2.32, + threading support in Clutter is always enabled. The rules on how to use + Clutter from multiple threads haven't changed. + +• Deprecated API is now marked using the CLUTTER_DEPRECATED and the + CLUTTER_DEPRECATED_FOR annotations; these two annotations will result in + compiler warnings when attempting to use the deprecated API. It is possible + to disable deprecation warnings for Clutter by defining the + CLUTTER_DISABLE_DEPRECATION_WARNINGS symbol when compiling. The previous + deprecation symbol, CLUTTER_DISABLE_DEPRECATED, is only used for macros. + +• Deprecated functionality has been moved to separate header files, installed + under the $includedir/clutter-1.0/clutter/deprecated directory. These files + are still included by default by clutter/clutter.h. + Release Notes for Clutter 1.8 ------------------------------------------------------------------------------- From 821ccef55562798bcda64ecc3d4b3f6252867d8b Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Thu, 10 Nov 2011 17:59:17 +0000 Subject: [PATCH 38/43] build: Disable evdev input by default It's an experimental input backend, so it should be enabled explicitly. --- README.in | 4 ++-- configure.ac | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.in b/README.in index 8d2c4668f..2335d21ea 100644 --- a/README.in +++ b/README.in @@ -194,8 +194,8 @@ Clutter has additional command line options for the configure script: --enable-tslib-input=[yes/no] Enable the TSLib input backend. (default=no) [EXPERIMENTAL] - --enable-evdev-input=[yes/no/check] - Enable the evdev input backend. (default=check) [EXPERIMENTAL] + --enable-evdev-input=[yes/no] + Enable the evdev input backend. (default=no) [EXPERIMENTAL] See also the INSTALL file generated by autotools for further information. diff --git a/configure.ac b/configure.ac index b66ccc720..94ece346b 100644 --- a/configure.ac +++ b/configure.ac @@ -418,9 +418,9 @@ AC_ARG_ENABLE([tslib-input], [enable_tslib=$enableval], [enable_tslib=no]) AC_ARG_ENABLE([evdev-input], - [AS_HELP_STRING([--with-evdev=@<:@yes/no@:>@], [Enable evdev for input events (default=yes)])], + [AS_HELP_STRING([--with-evdev=@<:@yes/no@:>@], [Enable evdev for input events (default=no)])], [enable_evdev=$enableval], - [enable_evdev=yes]) + [enable_evdev=no]) AS_IF([test "x$enable_tslib" = "xyes"], [ From b12a94dc272b0b4c9c3ec5e9de5845cd24a2f09a Mon Sep 17 00:00:00 2001 From: Rico Tzschichholz Date: Thu, 10 Nov 2011 19:01:48 +0100 Subject: [PATCH 39/43] docs: fix some headers paths --- clutter/cex100/clutter-cex100.h.in | 2 +- doc/reference/clutter/Makefile.am | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/clutter/cex100/clutter-cex100.h.in b/clutter/cex100/clutter-cex100.h.in index cbf7cef16..57e241df4 100644 --- a/clutter/cex100/clutter-cex100.h.in +++ b/clutter/cex100/clutter-cex100.h.in @@ -30,7 +30,7 @@ * specific API * * You need to include - * <clutter/egl/clutter-cex100.h> + * <clutter/cex100/clutter-cex100.h> * to have access to the functions documented here. */ diff --git a/doc/reference/clutter/Makefile.am b/doc/reference/clutter/Makefile.am index 3a83b62ec..29a6647ae 100644 --- a/doc/reference/clutter/Makefile.am +++ b/doc/reference/clutter/Makefile.am @@ -54,7 +54,7 @@ HFILE_GLOB=\ $(top_srcdir)/clutter/x11/clutter-x11-texture-pixmap.h \ $(top_srcdir)/clutter/x11/clutter-glx-texture-pixmap.h \ $(top_srcdir)/clutter/egl/clutter-egl.h \ - $(top_srcdir)/clutter/egl/clutter-cex100.h \ + $(top_srcdir)/clutter/cex100/clutter-cex100.h \ $(top_srcdir)/clutter/win32/clutter-win32.h \ $(top_srcdir)/clutter/gdk/clutter-gdk.h @@ -64,6 +64,7 @@ CFILE_GLOB=\ $(top_srcdir)/clutter/x11/*.c \ $(top_srcdir)/clutter/win32/*.c \ $(top_srcdir)/clutter/gdk/*.c \ + $(top_srcdir)/clutter/cex100/*.c \ $(top_srcdir)/clutter/egl/*.c # Header files to ignore when scanning. @@ -113,7 +114,7 @@ EXTRA_HFILES=\ $(top_srcdir)/clutter/x11/clutter-x11-texture-pixmap.h \ $(top_srcdir)/clutter/x11/clutter-glx-texture-pixmap.h \ $(top_srcdir)/clutter/egl/clutter-egl.h \ - $(top_srcdir)/clutter/egl/clutter-cex100.h \ + $(top_srcdir)/clutter/cex100/clutter-cex100.h \ $(top_srcdir)/clutter/wayland/clutter-wayland.h \ $(top_srcdir)/clutter/win32/clutter-win32.h \ $(top_srcdir)/clutter/gdk/clutter-gdk.h From 6d4f105ab251282e8d6453df5b585646e4bafdcf Mon Sep 17 00:00:00 2001 From: Rico Tzschichholz Date: Thu, 10 Nov 2011 19:02:19 +0100 Subject: [PATCH 40/43] po: update POTFILES.in --- po/POTFILES.in | 1 - 1 file changed, 1 deletion(-) diff --git a/po/POTFILES.in b/po/POTFILES.in index a027cf923..391aa1390 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -58,7 +58,6 @@ clutter/clutter-text.c clutter/clutter-texture.c clutter/clutter-timeline.c clutter/clutter-units.c -clutter/cogl/clutter-backend-cogl.c clutter/evdev/clutter-input-device-evdev.c clutter/x11/clutter-backend-x11.c clutter/x11/clutter-keymap-x11.c From 028b716f3310c3c9cae34c4cd23bb00f27f0103d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Dr=C4=85g?= Date: Thu, 10 Nov 2011 19:54:53 +0100 Subject: [PATCH 41/43] Updated POTFILES.in --- po/POTFILES.in | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/po/POTFILES.in b/po/POTFILES.in index 391aa1390..278934d3b 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -6,13 +6,6 @@ clutter/clutter-alpha.c clutter/clutter-animation.c clutter/clutter-animator.c clutter/clutter-backend.c -clutter/deprecated/clutter-behaviour.c -clutter/deprecated/clutter-behaviour-depth.c -clutter/deprecated/clutter-behaviour-ellipse.c -clutter/deprecated/clutter-behaviour-opacity.c -clutter/deprecated/clutter-behaviour-path.c -clutter/deprecated/clutter-behaviour-rotate.c -clutter/deprecated/clutter-behaviour-scale.c clutter/clutter-bind-constraint.c clutter/clutter-binding-pool.c clutter/clutter-bin-layout.c @@ -31,8 +24,6 @@ clutter/clutter-device-manager.c clutter/clutter-drag-action.c clutter/clutter-drop-action.c clutter/clutter-event.c -clutter/deprecated/clutter-fixed.c -clutter/deprecated/clutter-fixed.h clutter/clutter-flow-layout.c clutter/clutter-gesture-action.c clutter/clutter-input-device.c @@ -45,7 +36,6 @@ clutter/clutter-path-constraint.c clutter/clutter-rectangle.c clutter/clutter-script.c clutter/clutter-settings.c -clutter/deprecated/clutter-shader.c clutter/clutter-shader-effect.c clutter/clutter-shader-types.c clutter/clutter-snap-constraint.c @@ -58,7 +48,18 @@ clutter/clutter-text.c clutter/clutter-texture.c clutter/clutter-timeline.c clutter/clutter-units.c +clutter/deprecated/clutter-behaviour.c +clutter/deprecated/clutter-behaviour-depth.c +clutter/deprecated/clutter-behaviour-ellipse.c +clutter/deprecated/clutter-behaviour-opacity.c +clutter/deprecated/clutter-behaviour-path.c +clutter/deprecated/clutter-behaviour-rotate.c +clutter/deprecated/clutter-behaviour-scale.c +clutter/deprecated/clutter-fixed.c +clutter/deprecated/clutter-fixed.h +clutter/deprecated/clutter-shader.c clutter/evdev/clutter-input-device-evdev.c +clutter/gdk/clutter-backend-gdk.c clutter/x11/clutter-backend-x11.c clutter/x11/clutter-keymap-x11.c clutter/x11/clutter-x11-texture-pixmap.c From a0c9d294b0c2784b1459a21e5d8dbf8af9705432 Mon Sep 17 00:00:00 2001 From: Daniel Mustieles Date: Fri, 11 Nov 2011 18:16:06 +0100 Subject: [PATCH 42/43] Updated Spanish translation --- po/es.po | 770 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 392 insertions(+), 378 deletions(-) diff --git a/po/es.po b/po/es.po index 83f4771c6..134ea6c1e 100644 --- a/po/es.po +++ b/po/es.po @@ -1,416 +1,416 @@ # Spanish translation for clutter. # Copyright (C) 2011 clutter's COPYRIGHT HOLDER # This file is distributed under the same license as the clutter package. -# Daniel Mustieles , 2011. # Jorge González , 2011. +# Daniel Mustieles , 2011. # msgid "" msgstr "" "Project-Id-Version: clutter master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" "product=clutter&keywords=I18N+L10N&component=general\n" -"POT-Creation-Date: 2011-10-19 12:51+0000\n" -"PO-Revision-Date: 2011-10-22 17:52+0200\n" -"Last-Translator: Jorge González \n" -"Language-Team: Español; Castellano \n" +"POT-Creation-Date: 2011-11-10 18:55+0000\n" +"PO-Revision-Date: 2011-11-11 18:10+0100\n" +"Last-Translator: Daniel Mustieles \n" +"Language-Team: Español \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: \n" -"Plural-Forms: nplurals=2; plural=(n!=1);\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ../clutter/clutter-actor.c:3877 +#: ../clutter/clutter-actor.c:3886 msgid "X coordinate" msgstr "Coordenada X" -#: ../clutter/clutter-actor.c:3878 +#: ../clutter/clutter-actor.c:3887 msgid "X coordinate of the actor" msgstr "Coordenada X del actor" -#: ../clutter/clutter-actor.c:3893 +#: ../clutter/clutter-actor.c:3902 msgid "Y coordinate" msgstr "Coordenada Y" -#: ../clutter/clutter-actor.c:3894 +#: ../clutter/clutter-actor.c:3903 msgid "Y coordinate of the actor" msgstr "Coordenada Y del actor" -#: ../clutter/clutter-actor.c:3909 +#: ../clutter/clutter-actor.c:3918 #: ../clutter/deprecated/clutter-behaviour-ellipse.c:479 msgid "Width" msgstr "Anchura" -#: ../clutter/clutter-actor.c:3910 +#: ../clutter/clutter-actor.c:3919 msgid "Width of the actor" msgstr "Anchura del actor" -#: ../clutter/clutter-actor.c:3924 +#: ../clutter/clutter-actor.c:3933 #: ../clutter/deprecated/clutter-behaviour-ellipse.c:495 msgid "Height" msgstr "Altura" -#: ../clutter/clutter-actor.c:3925 +#: ../clutter/clutter-actor.c:3934 msgid "Height of the actor" msgstr "Altura del actor" -#: ../clutter/clutter-actor.c:3943 +#: ../clutter/clutter-actor.c:3952 msgid "Fixed X" msgstr "X fija" -#: ../clutter/clutter-actor.c:3944 +#: ../clutter/clutter-actor.c:3953 msgid "Forced X position of the actor" msgstr "Posición X forzada del actor" -#: ../clutter/clutter-actor.c:3962 +#: ../clutter/clutter-actor.c:3971 msgid "Fixed Y" msgstr "Y fija" -#: ../clutter/clutter-actor.c:3963 +#: ../clutter/clutter-actor.c:3972 msgid "Forced Y position of the actor" msgstr "Posición Y forzada del actor" -#: ../clutter/clutter-actor.c:3979 +#: ../clutter/clutter-actor.c:3988 msgid "Fixed position set" msgstr "Posición fija establecida" -#: ../clutter/clutter-actor.c:3980 +#: ../clutter/clutter-actor.c:3989 msgid "Whether to use fixed positioning for the actor" msgstr "Indica si se usa una posición fija para el actor" -#: ../clutter/clutter-actor.c:4002 +#: ../clutter/clutter-actor.c:4011 msgid "Min Width" msgstr "Anchura mínima" -#: ../clutter/clutter-actor.c:4003 +#: ../clutter/clutter-actor.c:4012 msgid "Forced minimum width request for the actor" msgstr "Solicitud de anchura mínima forzada para el actor" -#: ../clutter/clutter-actor.c:4022 +#: ../clutter/clutter-actor.c:4031 msgid "Min Height" msgstr "Altura mínima" -#: ../clutter/clutter-actor.c:4023 +#: ../clutter/clutter-actor.c:4032 msgid "Forced minimum height request for the actor" msgstr "Solicitud de altura mínima forzada para el actor" -#: ../clutter/clutter-actor.c:4042 +#: ../clutter/clutter-actor.c:4051 msgid "Natural Width" msgstr "Anchura natural" -#: ../clutter/clutter-actor.c:4043 +#: ../clutter/clutter-actor.c:4052 msgid "Forced natural width request for the actor" msgstr "Solicitud de anchura natural forzada para el actor" -#: ../clutter/clutter-actor.c:4062 +#: ../clutter/clutter-actor.c:4071 msgid "Natural Height" msgstr "Altura natural" -#: ../clutter/clutter-actor.c:4063 +#: ../clutter/clutter-actor.c:4072 msgid "Forced natural height request for the actor" msgstr "Solicitud de altura natural forzada para el actor" -#: ../clutter/clutter-actor.c:4079 +#: ../clutter/clutter-actor.c:4088 msgid "Minimum width set" msgstr "Anchura mínima establecida" -#: ../clutter/clutter-actor.c:4080 +#: ../clutter/clutter-actor.c:4089 msgid "Whether to use the min-width property" msgstr "Indica si se usa la propiedad «anchura mínima»" -#: ../clutter/clutter-actor.c:4095 +#: ../clutter/clutter-actor.c:4104 msgid "Minimum height set" msgstr "Altura mínima establecida" -#: ../clutter/clutter-actor.c:4096 +#: ../clutter/clutter-actor.c:4105 msgid "Whether to use the min-height property" msgstr "Indica si se usa la propiedad «altura mínima»" -#: ../clutter/clutter-actor.c:4111 +#: ../clutter/clutter-actor.c:4120 msgid "Natural width set" msgstr "Anchura natural establecida" -#: ../clutter/clutter-actor.c:4112 +#: ../clutter/clutter-actor.c:4121 msgid "Whether to use the natural-width property" msgstr "Indica si se usa la propiedad «anchura natural»" -#: ../clutter/clutter-actor.c:4129 +#: ../clutter/clutter-actor.c:4138 msgid "Natural height set" msgstr "Altura natural establecida" -#: ../clutter/clutter-actor.c:4130 +#: ../clutter/clutter-actor.c:4139 msgid "Whether to use the natural-height property" msgstr "Indica si se usa la propiedad «altura natural»" -#: ../clutter/clutter-actor.c:4149 +#: ../clutter/clutter-actor.c:4158 msgid "Allocation" msgstr "Asignación" -#: ../clutter/clutter-actor.c:4150 +#: ../clutter/clutter-actor.c:4159 msgid "The actor's allocation" msgstr "La asignación del actor" -#: ../clutter/clutter-actor.c:4206 +#: ../clutter/clutter-actor.c:4215 msgid "Request Mode" msgstr "Modo de solicitud" -#: ../clutter/clutter-actor.c:4207 +#: ../clutter/clutter-actor.c:4216 msgid "The actor's request mode" msgstr "El modo de solicitud del actor" -#: ../clutter/clutter-actor.c:4222 +#: ../clutter/clutter-actor.c:4231 msgid "Depth" msgstr "Profundidad" -#: ../clutter/clutter-actor.c:4223 +#: ../clutter/clutter-actor.c:4232 msgid "Position on the Z axis" msgstr "Posición en el eje Z" -#: ../clutter/clutter-actor.c:4237 +#: ../clutter/clutter-actor.c:4246 msgid "Opacity" msgstr "Opacidad" -#: ../clutter/clutter-actor.c:4238 +#: ../clutter/clutter-actor.c:4247 msgid "Opacity of an actor" msgstr "Opacidad de un actor" -#: ../clutter/clutter-actor.c:4257 +#: ../clutter/clutter-actor.c:4266 msgid "Offscreen redirect" msgstr "Redirección fuera de la pantalla" -#: ../clutter/clutter-actor.c:4258 +#: ../clutter/clutter-actor.c:4267 msgid "Flags controlling when to flatten the actor into a single image" msgstr "Opciones que controlan si se debe aplanar el actor en una única imagen" -#: ../clutter/clutter-actor.c:4276 +#: ../clutter/clutter-actor.c:4285 msgid "Visible" msgstr "Visible" -#: ../clutter/clutter-actor.c:4277 +#: ../clutter/clutter-actor.c:4286 msgid "Whether the actor is visible or not" msgstr "Indica si el actor es visible o no" -#: ../clutter/clutter-actor.c:4292 +#: ../clutter/clutter-actor.c:4301 msgid "Mapped" msgstr "Mapeado" -#: ../clutter/clutter-actor.c:4293 +#: ../clutter/clutter-actor.c:4302 msgid "Whether the actor will be painted" msgstr "Indica si se dibujará el actor" -#: ../clutter/clutter-actor.c:4307 +#: ../clutter/clutter-actor.c:4316 msgid "Realized" msgstr "Realizado" -#: ../clutter/clutter-actor.c:4308 +#: ../clutter/clutter-actor.c:4317 msgid "Whether the actor has been realized" msgstr "Indica si el actor se ha realizado" -#: ../clutter/clutter-actor.c:4324 +#: ../clutter/clutter-actor.c:4333 msgid "Reactive" msgstr "Reactivo" -#: ../clutter/clutter-actor.c:4325 +#: ../clutter/clutter-actor.c:4334 msgid "Whether the actor is reactive to events" msgstr "Indica si el actor es reactivo a eventos" -#: ../clutter/clutter-actor.c:4337 +#: ../clutter/clutter-actor.c:4346 msgid "Has Clip" msgstr "Tiene recorte" -#: ../clutter/clutter-actor.c:4338 +#: ../clutter/clutter-actor.c:4347 msgid "Whether the actor has a clip set" msgstr "Indica si el actor tiene un conjunto de recortes" -#: ../clutter/clutter-actor.c:4353 +#: ../clutter/clutter-actor.c:4362 msgid "Clip" msgstr "Recortar" -#: ../clutter/clutter-actor.c:4354 +#: ../clutter/clutter-actor.c:4363 msgid "The clip region for the actor" msgstr "La región de recorte del actor" -#: ../clutter/clutter-actor.c:4368 ../clutter/clutter-actor-meta.c:207 +#: ../clutter/clutter-actor.c:4377 ../clutter/clutter-actor-meta.c:207 #: ../clutter/clutter-binding-pool.c:319 ../clutter/clutter-input-device.c:236 msgid "Name" msgstr "Nombre" -#: ../clutter/clutter-actor.c:4369 +#: ../clutter/clutter-actor.c:4378 msgid "Name of the actor" msgstr "Nombre del actor" -#: ../clutter/clutter-actor.c:4383 +#: ../clutter/clutter-actor.c:4392 msgid "Scale X" msgstr "Escala en X" -#: ../clutter/clutter-actor.c:4384 +#: ../clutter/clutter-actor.c:4393 msgid "Scale factor on the X axis" msgstr "Factor de escala en el eje X" -#: ../clutter/clutter-actor.c:4399 +#: ../clutter/clutter-actor.c:4408 msgid "Scale Y" msgstr "Escala en Y" -#: ../clutter/clutter-actor.c:4400 +#: ../clutter/clutter-actor.c:4409 msgid "Scale factor on the Y axis" msgstr "Factor de escala en el eje Y" -#: ../clutter/clutter-actor.c:4415 +#: ../clutter/clutter-actor.c:4424 msgid "Scale Center X" msgstr "Centro X del escalado" -#: ../clutter/clutter-actor.c:4416 +#: ../clutter/clutter-actor.c:4425 msgid "Horizontal scale center" msgstr "Centro de la escala horizontal" -#: ../clutter/clutter-actor.c:4431 +#: ../clutter/clutter-actor.c:4440 msgid "Scale Center Y" msgstr "Centro Y del escalado" -#: ../clutter/clutter-actor.c:4432 +#: ../clutter/clutter-actor.c:4441 msgid "Vertical scale center" msgstr "Centro de la escala vertical" -#: ../clutter/clutter-actor.c:4447 +#: ../clutter/clutter-actor.c:4456 msgid "Scale Gravity" msgstr "Gravedad del escalado" -#: ../clutter/clutter-actor.c:4448 +#: ../clutter/clutter-actor.c:4457 msgid "The center of scaling" msgstr "El centro del escalado" -#: ../clutter/clutter-actor.c:4465 +#: ../clutter/clutter-actor.c:4474 msgid "Rotation Angle X" msgstr "Ángulo de rotación X" -#: ../clutter/clutter-actor.c:4466 +#: ../clutter/clutter-actor.c:4475 msgid "The rotation angle on the X axis" msgstr "El ángulo de rotación en el eje X" -#: ../clutter/clutter-actor.c:4481 +#: ../clutter/clutter-actor.c:4490 msgid "Rotation Angle Y" msgstr "Ángulo de rotación Y" -#: ../clutter/clutter-actor.c:4482 +#: ../clutter/clutter-actor.c:4491 msgid "The rotation angle on the Y axis" msgstr "El ángulo de rotación en el eje Y" -#: ../clutter/clutter-actor.c:4497 +#: ../clutter/clutter-actor.c:4506 msgid "Rotation Angle Z" msgstr "Ángulo de rotación Z" -#: ../clutter/clutter-actor.c:4498 +#: ../clutter/clutter-actor.c:4507 msgid "The rotation angle on the Z axis" msgstr "El ángulo de rotación en el eje Z" -#: ../clutter/clutter-actor.c:4513 +#: ../clutter/clutter-actor.c:4522 msgid "Rotation Center X" msgstr "Centro de rotación X" -#: ../clutter/clutter-actor.c:4514 +#: ../clutter/clutter-actor.c:4523 msgid "The rotation center on the X axis" msgstr "El ángulo de rotación en el eje Y" -#: ../clutter/clutter-actor.c:4530 +#: ../clutter/clutter-actor.c:4539 msgid "Rotation Center Y" msgstr "Centro de rotación Y" -#: ../clutter/clutter-actor.c:4531 +#: ../clutter/clutter-actor.c:4540 msgid "The rotation center on the Y axis" msgstr "En centro de la rotación en el eje Y" -#: ../clutter/clutter-actor.c:4547 +#: ../clutter/clutter-actor.c:4556 msgid "Rotation Center Z" msgstr "Centro de rotación Z" -#: ../clutter/clutter-actor.c:4548 +#: ../clutter/clutter-actor.c:4557 msgid "The rotation center on the Z axis" msgstr "El ángulo de rotación en el eje Z" -#: ../clutter/clutter-actor.c:4564 +#: ../clutter/clutter-actor.c:4573 msgid "Rotation Center Z Gravity" msgstr "Gravedad del centro de rotación Z" -#: ../clutter/clutter-actor.c:4565 +#: ../clutter/clutter-actor.c:4574 msgid "Center point for rotation around the Z axis" msgstr "Punto central de la rotación alrededor del eje Z" -#: ../clutter/clutter-actor.c:4583 +#: ../clutter/clutter-actor.c:4592 msgid "Anchor X" msgstr "Ancla X" -#: ../clutter/clutter-actor.c:4584 +#: ../clutter/clutter-actor.c:4593 msgid "X coordinate of the anchor point" msgstr "Coordenada X del punto de anclado" -#: ../clutter/clutter-actor.c:4600 +#: ../clutter/clutter-actor.c:4609 msgid "Anchor Y" msgstr "Ancla Y" -#: ../clutter/clutter-actor.c:4601 +#: ../clutter/clutter-actor.c:4610 msgid "Y coordinate of the anchor point" msgstr "Coordenada Y del punto de anclado" -#: ../clutter/clutter-actor.c:4616 +#: ../clutter/clutter-actor.c:4625 msgid "Anchor Gravity" msgstr "Gravedad del ancla" -#: ../clutter/clutter-actor.c:4617 +#: ../clutter/clutter-actor.c:4626 msgid "The anchor point as a ClutterGravity" msgstr "El punto de anclado como un «ClutterGravity»" -#: ../clutter/clutter-actor.c:4636 +#: ../clutter/clutter-actor.c:4645 msgid "Show on set parent" msgstr "Mostrar en el conjunto padre" -#: ../clutter/clutter-actor.c:4637 +#: ../clutter/clutter-actor.c:4646 msgid "Whether the actor is shown when parented" msgstr "Indica si el actor se muestra cuando tiene padre" -#: ../clutter/clutter-actor.c:4657 +#: ../clutter/clutter-actor.c:4666 msgid "Clip to Allocation" msgstr "Recortar a la asignación" -#: ../clutter/clutter-actor.c:4658 +#: ../clutter/clutter-actor.c:4667 msgid "Sets the clip region to track the actor's allocation" msgstr "Configura la región de recorte para seguir la ubicación del actor" -#: ../clutter/clutter-actor.c:4668 +#: ../clutter/clutter-actor.c:4677 msgid "Text Direction" msgstr "Dirección del texto" -#: ../clutter/clutter-actor.c:4669 +#: ../clutter/clutter-actor.c:4678 msgid "Direction of the text" msgstr "Dirección del texto" -#: ../clutter/clutter-actor.c:4687 +#: ../clutter/clutter-actor.c:4696 msgid "Has Pointer" msgstr "Tiene puntero" -#: ../clutter/clutter-actor.c:4688 +#: ../clutter/clutter-actor.c:4697 msgid "Whether the actor contains the pointer of an input device" msgstr "Indica si el actor contiene un puntero a un dispositivo de entrada" -#: ../clutter/clutter-actor.c:4705 +#: ../clutter/clutter-actor.c:4714 msgid "Actions" msgstr "Acciones" -#: ../clutter/clutter-actor.c:4706 +#: ../clutter/clutter-actor.c:4715 msgid "Adds an action to the actor" msgstr "Añade una acción al actor" -#: ../clutter/clutter-actor.c:4720 +#: ../clutter/clutter-actor.c:4729 msgid "Constraints" msgstr "Restricciones" -#: ../clutter/clutter-actor.c:4721 +#: ../clutter/clutter-actor.c:4730 msgid "Adds a constraint to the actor" msgstr "Añade una restricción al actor" -#: ../clutter/clutter-actor.c:4735 +#: ../clutter/clutter-actor.c:4744 msgid "Effect" msgstr "Efecto" -#: ../clutter/clutter-actor.c:4736 +#: ../clutter/clutter-actor.c:4745 msgid "Add an effect to be applied on the actor" msgstr "Añadir un efecto que aplicar al actor" @@ -436,7 +436,7 @@ msgid "Whether the meta is enabled" msgstr "Indica si la meta está activada" #: ../clutter/clutter-align-constraint.c:281 -#: ../clutter/clutter-bind-constraint.c:349 ../clutter/clutter-clone.c:340 +#: ../clutter/clutter-bind-constraint.c:349 ../clutter/clutter-clone.c:345 #: ../clutter/clutter-snap-constraint.c:321 msgid "Source" msgstr "Fuente" @@ -538,191 +538,15 @@ msgstr "La duración de la animación" msgid "The timeline of the animation" msgstr "La línea de tiempo de la animación" -#: ../clutter/deprecated/clutter-behaviour.c:241 -msgid "Alpha Object to drive the behaviour" -msgstr "Objeto alfa para dirigir el comportamiento" +#: ../clutter/clutter-backend.c:333 +#| msgid "The Clutter backend" +msgid "Unable to initialize the Clutter backend" +msgstr "No se pudo inicializar el backend de Clutter" -#: ../clutter/deprecated/clutter-behaviour-depth.c:180 -msgid "Start Depth" -msgstr "Profundidad inicial" - -#: ../clutter/deprecated/clutter-behaviour-depth.c:181 -msgid "Initial depth to apply" -msgstr "Profundidad inicial que aplicar" - -#: ../clutter/deprecated/clutter-behaviour-depth.c:196 -msgid "End Depth" -msgstr "Profundidad final" - -#: ../clutter/deprecated/clutter-behaviour-depth.c:197 -msgid "Final depth to apply" -msgstr "Profundidad final que aplicar" - -#: ../clutter/deprecated/clutter-behaviour-ellipse.c:399 -msgid "Start Angle" -msgstr "Ángulo inicial" - -#: ../clutter/deprecated/clutter-behaviour-ellipse.c:400 -#: ../clutter/deprecated/clutter-behaviour-rotate.c:282 -msgid "Initial angle" -msgstr "Ángulo inicial" - -#: ../clutter/deprecated/clutter-behaviour-ellipse.c:415 -msgid "End Angle" -msgstr "Ángulo final" - -#: ../clutter/deprecated/clutter-behaviour-ellipse.c:416 -#: ../clutter/deprecated/clutter-behaviour-rotate.c:300 -msgid "Final angle" -msgstr "Ángulo final" - -#: ../clutter/deprecated/clutter-behaviour-ellipse.c:431 -msgid "Angle x tilt" -msgstr "Inclinación X del ángulo" - -#: ../clutter/deprecated/clutter-behaviour-ellipse.c:432 -msgid "Tilt of the ellipse around x axis" -msgstr "Inclinación de la elipse sobre el eje X" - -#: ../clutter/deprecated/clutter-behaviour-ellipse.c:447 -msgid "Angle y tilt" -msgstr "Inclinación Y del ángulo" - -#: ../clutter/deprecated/clutter-behaviour-ellipse.c:448 -msgid "Tilt of the ellipse around y axis" -msgstr "Inclinación de la elipse sobre el eje Y" - -#: ../clutter/deprecated/clutter-behaviour-ellipse.c:463 -msgid "Angle z tilt" -msgstr "Inclinación Z del ángulo" - -#: ../clutter/deprecated/clutter-behaviour-ellipse.c:464 -msgid "Tilt of the ellipse around z axis" -msgstr "Inclinación de la elipse sobre el eje Z" - -#: ../clutter/deprecated/clutter-behaviour-ellipse.c:480 -msgid "Width of the ellipse" -msgstr "Anchura de la elipse" - -#: ../clutter/deprecated/clutter-behaviour-ellipse.c:496 -msgid "Height of ellipse" -msgstr "Altura de la elipse" - -#: ../clutter/deprecated/clutter-behaviour-ellipse.c:511 -msgid "Center" -msgstr "Centro" - -#: ../clutter/deprecated/clutter-behaviour-ellipse.c:512 -msgid "Center of ellipse" -msgstr "Centro de la elipse" - -#: ../clutter/deprecated/clutter-behaviour-ellipse.c:526 -#: ../clutter/deprecated/clutter-behaviour-rotate.c:335 -#: ../clutter/clutter-timeline.c:310 -msgid "Direction" -msgstr "Dirección" - -#: ../clutter/deprecated/clutter-behaviour-ellipse.c:527 -#: ../clutter/deprecated/clutter-behaviour-rotate.c:336 -msgid "Direction of rotation" -msgstr "Dirección de la rotación" - -#: ../clutter/deprecated/clutter-behaviour-opacity.c:183 -msgid "Opacity Start" -msgstr "Opacidad inicial" - -#: ../clutter/deprecated/clutter-behaviour-opacity.c:184 -msgid "Initial opacity level" -msgstr "Nivel inicial de opacidad" - -#: ../clutter/deprecated/clutter-behaviour-opacity.c:201 -msgid "Opacity End" -msgstr "Opacidad final" - -#: ../clutter/deprecated/clutter-behaviour-opacity.c:202 -msgid "Final opacity level" -msgstr "Nivel final de opacidad" - -#: ../clutter/deprecated/clutter-behaviour-path.c:224 -#: ../clutter/clutter-path-constraint.c:212 -msgid "Path" -msgstr "Ruta" - -#: ../clutter/deprecated/clutter-behaviour-path.c:225 -msgid "The ClutterPath object representing the path to animate along" -msgstr "El objeto «ClutterPath» que representa la ruta sobre la que animar" - -#: ../clutter/deprecated/clutter-behaviour-rotate.c:281 -msgid "Angle Begin" -msgstr "Ángulo inicial" - -#: ../clutter/deprecated/clutter-behaviour-rotate.c:299 -msgid "Angle End" -msgstr "Ángulo final" - -#: ../clutter/deprecated/clutter-behaviour-rotate.c:317 -msgid "Axis" -msgstr "Eje" - -#: ../clutter/deprecated/clutter-behaviour-rotate.c:318 -msgid "Axis of rotation" -msgstr "Eje de rotación" - -#: ../clutter/deprecated/clutter-behaviour-rotate.c:353 -msgid "Center X" -msgstr "Centro X" - -#: ../clutter/deprecated/clutter-behaviour-rotate.c:354 -msgid "X coordinate of the center of rotation" -msgstr "Coordenada X del centro de rotación" - -#: ../clutter/deprecated/clutter-behaviour-rotate.c:371 -msgid "Center Y" -msgstr "Centro Y" - -#: ../clutter/deprecated/clutter-behaviour-rotate.c:372 -msgid "Y coordinate of the center of rotation" -msgstr "Coordenada Y del centro de rotación" - -#: ../clutter/deprecated/clutter-behaviour-rotate.c:389 -msgid "Center Z" -msgstr "Centro Z" - -#: ../clutter/deprecated/clutter-behaviour-rotate.c:390 -msgid "Z coordinate of the center of rotation" -msgstr "Coordenada Z del centro de rotación" - -#: ../clutter/deprecated/clutter-behaviour-scale.c:224 -msgid "X Start Scale" -msgstr "Escala X inicial" - -#: ../clutter/deprecated/clutter-behaviour-scale.c:225 -msgid "Initial scale on the X axis" -msgstr "Escala inicial en el eje X" - -#: ../clutter/deprecated/clutter-behaviour-scale.c:243 -msgid "X End Scale" -msgstr "Escala X final" - -#: ../clutter/deprecated/clutter-behaviour-scale.c:244 -msgid "Final scale on the X axis" -msgstr "Escala final en el eje X" - -#: ../clutter/deprecated/clutter-behaviour-scale.c:262 -msgid "Y Start Scale" -msgstr "Escala Y inicial" - -#: ../clutter/deprecated/clutter-behaviour-scale.c:263 -msgid "Initial scale on the Y axis" -msgstr "Escala inicial en el eje Y" - -#: ../clutter/deprecated/clutter-behaviour-scale.c:281 -msgid "Y End Scale" -msgstr "Escala Y final" - -#: ../clutter/deprecated/clutter-behaviour-scale.c:282 -msgid "Final scale on the Y axis" -msgstr "Escala final en el eje Y" +#: ../clutter/clutter-backend.c:407 +#, c-format +msgid "The backend of type '%s' does not support creating multiple stages" +msgstr "El backend del tipo «%s» no soporta la creación de múltiples escenarios" #: ../clutter/clutter-bind-constraint.c:350 msgid "The source of the binding" @@ -972,7 +796,7 @@ msgstr "Umbral de la pulsación larga" msgid "The maximum threshold before a long press is cancelled" msgstr "El umbral máximo antes de cancelar una pulsación larga" -#: ../clutter/clutter-clone.c:341 +#: ../clutter/clutter-clone.c:346 msgid "Specifies the actor to be cloned" msgstr "Especifica qué actor clonar" @@ -1198,59 +1022,59 @@ msgstr "El gestor que ha creado este dato" #. * Do NOT translate it to non-English e.g. "predefinito:LTR"! If #. * it isn't default:LTR or default:RTL it will not work. #. -#: ../clutter/clutter-main.c:713 +#: ../clutter/clutter-main.c:752 msgid "default:LTR" msgstr "default:LTR" -#: ../clutter/clutter-main.c:1524 +#: ../clutter/clutter-main.c:1610 msgid "Show frames per second" msgstr "Mostrar fotogramas por segundo" -#: ../clutter/clutter-main.c:1526 +#: ../clutter/clutter-main.c:1612 msgid "Default frame rate" msgstr "Velocidad de fotogramas predeterminada" -#: ../clutter/clutter-main.c:1528 +#: ../clutter/clutter-main.c:1614 msgid "Make all warnings fatal" msgstr "Hacer que todos los avisos actúen como errores" -#: ../clutter/clutter-main.c:1531 +#: ../clutter/clutter-main.c:1617 msgid "Direction for the text" msgstr "Dirección del texto" -#: ../clutter/clutter-main.c:1534 +#: ../clutter/clutter-main.c:1620 msgid "Disable mipmapping on text" msgstr "Desactivar «mipmapping» en el texto" -#: ../clutter/clutter-main.c:1537 +#: ../clutter/clutter-main.c:1623 msgid "Use 'fuzzy' picking" msgstr "Usar selección «difusa»" -#: ../clutter/clutter-main.c:1540 +#: ../clutter/clutter-main.c:1626 msgid "Clutter debugging flags to set" msgstr "Opciones de depuración de Clutter que establecer" -#: ../clutter/clutter-main.c:1542 +#: ../clutter/clutter-main.c:1628 msgid "Clutter debugging flags to unset" msgstr "Opciones de depuración de Clutter que no establecer" -#: ../clutter/clutter-main.c:1546 +#: ../clutter/clutter-main.c:1632 msgid "Clutter profiling flags to set" msgstr "Opciones de perfil de Clutter que establecer" -#: ../clutter/clutter-main.c:1548 +#: ../clutter/clutter-main.c:1634 msgid "Clutter profiling flags to unset" msgstr "Opciones de perfil de Clutter que no establecer" -#: ../clutter/clutter-main.c:1551 +#: ../clutter/clutter-main.c:1637 msgid "Enable accessibility" msgstr "Activar accesibilidad" -#: ../clutter/clutter-main.c:1739 +#: ../clutter/clutter-main.c:1829 msgid "Clutter Options" msgstr "Opciones de Clutter" -#: ../clutter/clutter-main.c:1740 +#: ../clutter/clutter-main.c:1830 msgid "Show Clutter Options" msgstr "Mostrar las opciones de Clutter" @@ -1322,6 +1146,11 @@ msgstr "El nivel de llenado del búfer" msgid "The duration of the stream, in seconds" msgstr "La duración del flujo, en segundos" +#: ../clutter/clutter-path-constraint.c:212 +#: ../clutter/deprecated/clutter-behaviour-path.c:224 +msgid "Path" +msgstr "Ruta" + #: ../clutter/clutter-path-constraint.c:213 msgid "The path used to constrain an actor" msgstr "La ruta usada para restringir a un actor" @@ -1460,8 +1289,7 @@ msgstr "Orden de tipografías del subpíxel" #: ../clutter/clutter-settings.c:582 msgid "The type of subpixel antialiasing (none, rgb, bgr, vrgb, vbgr)" -msgstr "" -"El tipo de suavizado del subpíxel («none», «rgb», «bgr», «vrgb», «vbgr»)" +msgstr "El tipo de suavizado del subpíxel («none», «rgb», «bgr», «vrgb», «vbgr»)" #: ../clutter/clutter-settings.c:599 msgid "The minimum duration for a long press gesture to be recognized" @@ -1476,7 +1304,6 @@ msgid "Timestamp of the current fontconfig configuration" msgstr "Marca de tiempo de la configuración actual de fontconfig" #: ../clutter/clutter-settings.c:624 -#| msgid "Password Character" msgid "Password Hint Time" msgstr "Tiempo de la sugerencia de la contraseña" @@ -1484,47 +1311,6 @@ msgstr "Tiempo de la sugerencia de la contraseña" msgid "How long to show the last input character in hidden entries" msgstr "Cuánto tiempo mostrar el último carácter en entradas ocultas" -#: ../clutter/deprecated/clutter-shader.c:257 -msgid "Vertex Source" -msgstr "Origen del vértice" - -#: ../clutter/deprecated/clutter-shader.c:258 -msgid "Source of vertex shader" -msgstr "Origen del sombreado del vértice" - -#: ../clutter/deprecated/clutter-shader.c:274 -msgid "Fragment Source" -msgstr "Origen del fragmento" - -#: ../clutter/deprecated/clutter-shader.c:275 -msgid "Source of fragment shader" -msgstr "Origen del sombreado del fragmento" - -#: ../clutter/deprecated/clutter-shader.c:292 -msgid "Compiled" -msgstr "Compilado" - -#: ../clutter/deprecated/clutter-shader.c:293 -msgid "Whether the shader is compiled and linked" -msgstr "Indica si el sombreado está compilado y enlazado" - -#: ../clutter/deprecated/clutter-shader.c:310 -msgid "Whether the shader is enabled" -msgstr "Indica si el sombreado está activado" - -#: ../clutter/deprecated/clutter-shader.c:521 -#, c-format -msgid "%s compilation failed: %s" -msgstr "falló la compilación de %s: %s" - -#: ../clutter/deprecated/clutter-shader.c:522 -msgid "Vertex shader" -msgstr "Sombreado del vértice" - -#: ../clutter/deprecated/clutter-shader.c:523 -msgid "Fragment shader" -msgstr "Sombreado del fragmento" - #: ../clutter/clutter-shader-effect.c:482 msgid "Shader Type" msgstr "Tipo de sombreado" @@ -1935,8 +1721,8 @@ msgstr "Sincronizar tamaño del actor" #: ../clutter/clutter-texture.c:986 msgid "Auto sync size of actor to underlying pixbuf dimensions" msgstr "" -"Sincronizar automáticamente el tamaño del actor a las dimensiones de " -"«pixbuf» subyacente" +"Sincronizar automáticamente el tamaño del actor a las dimensiones de «pixbuf» " +"subyacente" #: ../clutter/clutter-texture.c:993 msgid "Disable Slicing" @@ -2085,6 +1871,12 @@ msgstr "Retardo antes de empezar" msgid "Duration of the timeline in milliseconds" msgstr "Duración de la línea de tiempo, en milisegundos" +#: ../clutter/clutter-timeline.c:310 +#: ../clutter/deprecated/clutter-behaviour-ellipse.c:526 +#: ../clutter/deprecated/clutter-behaviour-rotate.c:335 +msgid "Direction" +msgstr "Dirección" + #: ../clutter/clutter-timeline.c:311 msgid "Direction of the timeline" msgstr "Dirección de la línea de tiempo" @@ -2097,6 +1889,222 @@ msgstr "Invertir automáticamente" msgid "Whether the direction should be reversed when reaching the end" msgstr "Indica si se debe invertir la dirección al llegar al final" +#: ../clutter/deprecated/clutter-behaviour.c:241 +msgid "Alpha Object to drive the behaviour" +msgstr "Objeto alfa para dirigir el comportamiento" + +#: ../clutter/deprecated/clutter-behaviour-depth.c:180 +msgid "Start Depth" +msgstr "Profundidad inicial" + +#: ../clutter/deprecated/clutter-behaviour-depth.c:181 +msgid "Initial depth to apply" +msgstr "Profundidad inicial que aplicar" + +#: ../clutter/deprecated/clutter-behaviour-depth.c:196 +msgid "End Depth" +msgstr "Profundidad final" + +#: ../clutter/deprecated/clutter-behaviour-depth.c:197 +msgid "Final depth to apply" +msgstr "Profundidad final que aplicar" + +#: ../clutter/deprecated/clutter-behaviour-ellipse.c:399 +msgid "Start Angle" +msgstr "Ángulo inicial" + +#: ../clutter/deprecated/clutter-behaviour-ellipse.c:400 +#: ../clutter/deprecated/clutter-behaviour-rotate.c:282 +msgid "Initial angle" +msgstr "Ángulo inicial" + +#: ../clutter/deprecated/clutter-behaviour-ellipse.c:415 +msgid "End Angle" +msgstr "Ángulo final" + +#: ../clutter/deprecated/clutter-behaviour-ellipse.c:416 +#: ../clutter/deprecated/clutter-behaviour-rotate.c:300 +msgid "Final angle" +msgstr "Ángulo final" + +#: ../clutter/deprecated/clutter-behaviour-ellipse.c:431 +msgid "Angle x tilt" +msgstr "Inclinación X del ángulo" + +#: ../clutter/deprecated/clutter-behaviour-ellipse.c:432 +msgid "Tilt of the ellipse around x axis" +msgstr "Inclinación de la elipse sobre el eje X" + +#: ../clutter/deprecated/clutter-behaviour-ellipse.c:447 +msgid "Angle y tilt" +msgstr "Inclinación Y del ángulo" + +#: ../clutter/deprecated/clutter-behaviour-ellipse.c:448 +msgid "Tilt of the ellipse around y axis" +msgstr "Inclinación de la elipse sobre el eje Y" + +#: ../clutter/deprecated/clutter-behaviour-ellipse.c:463 +msgid "Angle z tilt" +msgstr "Inclinación Z del ángulo" + +#: ../clutter/deprecated/clutter-behaviour-ellipse.c:464 +msgid "Tilt of the ellipse around z axis" +msgstr "Inclinación de la elipse sobre el eje Z" + +#: ../clutter/deprecated/clutter-behaviour-ellipse.c:480 +msgid "Width of the ellipse" +msgstr "Anchura de la elipse" + +#: ../clutter/deprecated/clutter-behaviour-ellipse.c:496 +msgid "Height of ellipse" +msgstr "Altura de la elipse" + +#: ../clutter/deprecated/clutter-behaviour-ellipse.c:511 +msgid "Center" +msgstr "Centro" + +#: ../clutter/deprecated/clutter-behaviour-ellipse.c:512 +msgid "Center of ellipse" +msgstr "Centro de la elipse" + +#: ../clutter/deprecated/clutter-behaviour-ellipse.c:527 +#: ../clutter/deprecated/clutter-behaviour-rotate.c:336 +msgid "Direction of rotation" +msgstr "Dirección de la rotación" + +#: ../clutter/deprecated/clutter-behaviour-opacity.c:183 +msgid "Opacity Start" +msgstr "Opacidad inicial" + +#: ../clutter/deprecated/clutter-behaviour-opacity.c:184 +msgid "Initial opacity level" +msgstr "Nivel inicial de opacidad" + +#: ../clutter/deprecated/clutter-behaviour-opacity.c:201 +msgid "Opacity End" +msgstr "Opacidad final" + +#: ../clutter/deprecated/clutter-behaviour-opacity.c:202 +msgid "Final opacity level" +msgstr "Nivel final de opacidad" + +#: ../clutter/deprecated/clutter-behaviour-path.c:225 +msgid "The ClutterPath object representing the path to animate along" +msgstr "El objeto «ClutterPath» que representa la ruta sobre la que animar" + +#: ../clutter/deprecated/clutter-behaviour-rotate.c:281 +msgid "Angle Begin" +msgstr "Ángulo inicial" + +#: ../clutter/deprecated/clutter-behaviour-rotate.c:299 +msgid "Angle End" +msgstr "Ángulo final" + +#: ../clutter/deprecated/clutter-behaviour-rotate.c:317 +msgid "Axis" +msgstr "Eje" + +#: ../clutter/deprecated/clutter-behaviour-rotate.c:318 +msgid "Axis of rotation" +msgstr "Eje de rotación" + +#: ../clutter/deprecated/clutter-behaviour-rotate.c:353 +msgid "Center X" +msgstr "Centro X" + +#: ../clutter/deprecated/clutter-behaviour-rotate.c:354 +msgid "X coordinate of the center of rotation" +msgstr "Coordenada X del centro de rotación" + +#: ../clutter/deprecated/clutter-behaviour-rotate.c:371 +msgid "Center Y" +msgstr "Centro Y" + +#: ../clutter/deprecated/clutter-behaviour-rotate.c:372 +msgid "Y coordinate of the center of rotation" +msgstr "Coordenada Y del centro de rotación" + +#: ../clutter/deprecated/clutter-behaviour-rotate.c:389 +msgid "Center Z" +msgstr "Centro Z" + +#: ../clutter/deprecated/clutter-behaviour-rotate.c:390 +msgid "Z coordinate of the center of rotation" +msgstr "Coordenada Z del centro de rotación" + +#: ../clutter/deprecated/clutter-behaviour-scale.c:224 +msgid "X Start Scale" +msgstr "Escala X inicial" + +#: ../clutter/deprecated/clutter-behaviour-scale.c:225 +msgid "Initial scale on the X axis" +msgstr "Escala inicial en el eje X" + +#: ../clutter/deprecated/clutter-behaviour-scale.c:243 +msgid "X End Scale" +msgstr "Escala X final" + +#: ../clutter/deprecated/clutter-behaviour-scale.c:244 +msgid "Final scale on the X axis" +msgstr "Escala final en el eje X" + +#: ../clutter/deprecated/clutter-behaviour-scale.c:262 +msgid "Y Start Scale" +msgstr "Escala Y inicial" + +#: ../clutter/deprecated/clutter-behaviour-scale.c:263 +msgid "Initial scale on the Y axis" +msgstr "Escala inicial en el eje Y" + +#: ../clutter/deprecated/clutter-behaviour-scale.c:281 +msgid "Y End Scale" +msgstr "Escala Y final" + +#: ../clutter/deprecated/clutter-behaviour-scale.c:282 +msgid "Final scale on the Y axis" +msgstr "Escala final en el eje Y" + +#: ../clutter/deprecated/clutter-shader.c:257 +msgid "Vertex Source" +msgstr "Origen del vértice" + +#: ../clutter/deprecated/clutter-shader.c:258 +msgid "Source of vertex shader" +msgstr "Origen del sombreado del vértice" + +#: ../clutter/deprecated/clutter-shader.c:274 +msgid "Fragment Source" +msgstr "Origen del fragmento" + +#: ../clutter/deprecated/clutter-shader.c:275 +msgid "Source of fragment shader" +msgstr "Origen del sombreado del fragmento" + +#: ../clutter/deprecated/clutter-shader.c:292 +msgid "Compiled" +msgstr "Compilado" + +#: ../clutter/deprecated/clutter-shader.c:293 +msgid "Whether the shader is compiled and linked" +msgstr "Indica si el sombreado está compilado y enlazado" + +#: ../clutter/deprecated/clutter-shader.c:310 +msgid "Whether the shader is enabled" +msgstr "Indica si el sombreado está activado" + +#: ../clutter/deprecated/clutter-shader.c:521 +#, c-format +msgid "%s compilation failed: %s" +msgstr "falló la compilación de %s: %s" + +#: ../clutter/deprecated/clutter-shader.c:522 +msgid "Vertex shader" +msgstr "Sombreado del vértice" + +#: ../clutter/deprecated/clutter-shader.c:523 +msgid "Fragment shader" +msgstr "Sombreado del fragmento" + #: ../clutter/evdev/clutter-input-device-evdev.c:147 msgid "sysfs Path" msgstr "Ruta de sysfs" @@ -2113,19 +2121,25 @@ msgstr "Ruta del dispositivo" msgid "Path of the device node" msgstr "Ruta al nodo del dispositivo" -#: ../clutter/x11/clutter-backend-x11.c:483 +#: ../clutter/gdk/clutter-backend-gdk.c:287 +#, c-format +msgid "Could not find a suitable CoglWinsys for a GdkDisplay of type %s" +msgstr "" +"No se pudo encontrar un CoglWinsys adecuado para un GdkDisplay de tipo %s" + +#: ../clutter/x11/clutter-backend-x11.c:506 msgid "X display to use" msgstr "Pantalla X que usar" -#: ../clutter/x11/clutter-backend-x11.c:489 +#: ../clutter/x11/clutter-backend-x11.c:512 msgid "X screen to use" msgstr "Pantalla (screen) X que usar" -#: ../clutter/x11/clutter-backend-x11.c:494 +#: ../clutter/x11/clutter-backend-x11.c:517 msgid "Make X calls synchronous" msgstr "Hacer llamadas a X síncronas" -#: ../clutter/x11/clutter-backend-x11.c:501 +#: ../clutter/x11/clutter-backend-x11.c:524 msgid "Enable XInput support" msgstr "Activar soporte XInput" @@ -2133,105 +2147,105 @@ msgstr "Activar soporte XInput" msgid "The Clutter backend" msgstr "El backend de Clutter" -#: ../clutter/x11/clutter-x11-texture-pixmap.c:545 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:544 msgid "Pixmap" msgstr "Mapa de píxeles" -#: ../clutter/x11/clutter-x11-texture-pixmap.c:546 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:545 msgid "The X11 Pixmap to be bound" msgstr "EL mapa de píxeles X11 que asociar" -#: ../clutter/x11/clutter-x11-texture-pixmap.c:554 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:553 msgid "Pixmap width" msgstr "Anchura del mapa de píxeles" -#: ../clutter/x11/clutter-x11-texture-pixmap.c:555 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:554 msgid "The width of the pixmap bound to this texture" msgstr "La anchura del mapa de píxeles asociado a esta textura" -#: ../clutter/x11/clutter-x11-texture-pixmap.c:563 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:562 msgid "Pixmap height" msgstr "Altura del mapa de píxeles" -#: ../clutter/x11/clutter-x11-texture-pixmap.c:564 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:563 msgid "The height of the pixmap bound to this texture" msgstr "La altura del mapa de píxeles asociado a esta textura" -#: ../clutter/x11/clutter-x11-texture-pixmap.c:572 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:571 msgid "Pixmap Depth" msgstr "Profundidad del mapa de píxeles" -#: ../clutter/x11/clutter-x11-texture-pixmap.c:573 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:572 msgid "The depth (in number of bits) of the pixmap bound to this texture" msgstr "" "La profundidad (en número de bits) del mapa de píxeles asociado a esta " "textura" -#: ../clutter/x11/clutter-x11-texture-pixmap.c:581 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:580 msgid "Automatic Updates" msgstr "Actualizaciones automáticas" -#: ../clutter/x11/clutter-x11-texture-pixmap.c:582 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:581 msgid "If the texture should be kept in sync with any pixmap changes." msgstr "" "Indica si la textura se debe sincronizar con cualquier cambio en el mapa de " "píxeles." -#: ../clutter/x11/clutter-x11-texture-pixmap.c:590 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:589 msgid "Window" msgstr "Ventana" -#: ../clutter/x11/clutter-x11-texture-pixmap.c:591 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:590 msgid "The X11 Window to be bound" msgstr "La ventana X11 que asociar" -#: ../clutter/x11/clutter-x11-texture-pixmap.c:599 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:598 msgid "Window Redirect Automatic" msgstr "Redirección automática de la ventana" -#: ../clutter/x11/clutter-x11-texture-pixmap.c:600 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:599 msgid "If composite window redirects are set to Automatic (or Manual if false)" msgstr "" "Indica si la redirección de la ventana compuesta está establecida a " "«Automática» (o «Manual» si es falso)" -#: ../clutter/x11/clutter-x11-texture-pixmap.c:610 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:609 msgid "Window Mapped" msgstr "Ventana mapeada" -#: ../clutter/x11/clutter-x11-texture-pixmap.c:611 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:610 msgid "If window is mapped" msgstr "Indica si la ventana está mapeada" -#: ../clutter/x11/clutter-x11-texture-pixmap.c:620 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:619 msgid "Destroyed" msgstr "Destruida" -#: ../clutter/x11/clutter-x11-texture-pixmap.c:621 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:620 msgid "If window has been destroyed" msgstr "Indica si se ha destruido la ventana" -#: ../clutter/x11/clutter-x11-texture-pixmap.c:629 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:628 msgid "Window X" msgstr "Ventana X" -#: ../clutter/x11/clutter-x11-texture-pixmap.c:630 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:629 msgid "X position of window on screen according to X11" msgstr "Posición X de la ventana en la pantalla, de acuerdo con X11" -#: ../clutter/x11/clutter-x11-texture-pixmap.c:638 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:637 msgid "Window Y" msgstr "Ventana Y" -#: ../clutter/x11/clutter-x11-texture-pixmap.c:639 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:638 msgid "Y position of window on screen according to X11" msgstr "Posición Y de la ventana en la pantalla, de acuerdo con X11" -#: ../clutter/x11/clutter-x11-texture-pixmap.c:646 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:645 msgid "Window Override Redirect" msgstr "Omitir redirección de la ventana" -#: ../clutter/x11/clutter-x11-texture-pixmap.c:647 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:646 msgid "If this is an override-redirect window" msgstr "Indica si esta es una ventana que omite la redirección" From 65a07db5c07b2601835565ce48db689f634203b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=20Di=C3=A9guez?= Date: Sun, 13 Nov 2011 18:52:21 +0100 Subject: [PATCH 43/43] Updated Galician translations --- po/clutter-1.0.pot | 1455 +++++++++++++++++++++++--------------------- po/gl.po | 765 +++++++++++------------ 2 files changed, 1141 insertions(+), 1079 deletions(-) diff --git a/po/clutter-1.0.pot b/po/clutter-1.0.pot index 3a0dda79b..042be922d 100644 --- a/po/clutter-1.0.pot +++ b/po/clutter-1.0.pot @@ -1,15 +1,15 @@ # SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR Intel Corporation +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" -"Project-Id-Version: clutter 1.7.90\n" +"Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: http://bugzilla.clutter-project.org/enter_bug.cgi?" "product=clutter\n" -"POT-Creation-Date: 2011-09-12 13:51+0100\n" +"POT-Creation-Date: 2011-11-13 18:51+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,2138 +18,2185 @@ msgstr "" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" -#: clutter/clutter-actor.c:3852 +#: ../clutter/clutter-actor.c:3886 msgid "X coordinate" msgstr "" -#: clutter/clutter-actor.c:3853 +#: ../clutter/clutter-actor.c:3887 msgid "X coordinate of the actor" msgstr "" -#: clutter/clutter-actor.c:3868 +#: ../clutter/clutter-actor.c:3902 msgid "Y coordinate" msgstr "" -#: clutter/clutter-actor.c:3869 +#: ../clutter/clutter-actor.c:3903 msgid "Y coordinate of the actor" msgstr "" -#: clutter/clutter-actor.c:3884 clutter/clutter-behaviour-ellipse.c:477 +#: ../clutter/clutter-actor.c:3918 +#: ../clutter/deprecated/clutter-behaviour-ellipse.c:479 msgid "Width" msgstr "" -#: clutter/clutter-actor.c:3885 +#: ../clutter/clutter-actor.c:3919 msgid "Width of the actor" msgstr "" -#: clutter/clutter-actor.c:3899 clutter/clutter-behaviour-ellipse.c:493 +#: ../clutter/clutter-actor.c:3933 +#: ../clutter/deprecated/clutter-behaviour-ellipse.c:495 msgid "Height" msgstr "" -#: clutter/clutter-actor.c:3900 +#: ../clutter/clutter-actor.c:3934 msgid "Height of the actor" msgstr "" -#: clutter/clutter-actor.c:3918 +#: ../clutter/clutter-actor.c:3952 msgid "Fixed X" msgstr "" -#: clutter/clutter-actor.c:3919 +#: ../clutter/clutter-actor.c:3953 msgid "Forced X position of the actor" msgstr "" -#: clutter/clutter-actor.c:3937 +#: ../clutter/clutter-actor.c:3971 msgid "Fixed Y" msgstr "" -#: clutter/clutter-actor.c:3938 +#: ../clutter/clutter-actor.c:3972 msgid "Forced Y position of the actor" msgstr "" -#: clutter/clutter-actor.c:3954 +#: ../clutter/clutter-actor.c:3988 msgid "Fixed position set" msgstr "" -#: clutter/clutter-actor.c:3955 +#: ../clutter/clutter-actor.c:3989 msgid "Whether to use fixed positioning for the actor" msgstr "" -#: clutter/clutter-actor.c:3977 +#: ../clutter/clutter-actor.c:4011 msgid "Min Width" msgstr "" -#: clutter/clutter-actor.c:3978 +#: ../clutter/clutter-actor.c:4012 msgid "Forced minimum width request for the actor" msgstr "" -#: clutter/clutter-actor.c:3997 +#: ../clutter/clutter-actor.c:4031 msgid "Min Height" msgstr "" -#: clutter/clutter-actor.c:3998 +#: ../clutter/clutter-actor.c:4032 msgid "Forced minimum height request for the actor" msgstr "" -#: clutter/clutter-actor.c:4017 +#: ../clutter/clutter-actor.c:4051 msgid "Natural Width" msgstr "" -#: clutter/clutter-actor.c:4018 +#: ../clutter/clutter-actor.c:4052 msgid "Forced natural width request for the actor" msgstr "" -#: clutter/clutter-actor.c:4037 +#: ../clutter/clutter-actor.c:4071 msgid "Natural Height" msgstr "" -#: clutter/clutter-actor.c:4038 +#: ../clutter/clutter-actor.c:4072 msgid "Forced natural height request for the actor" msgstr "" -#: clutter/clutter-actor.c:4054 +#: ../clutter/clutter-actor.c:4088 msgid "Minimum width set" msgstr "" -#: clutter/clutter-actor.c:4055 +#: ../clutter/clutter-actor.c:4089 msgid "Whether to use the min-width property" msgstr "" -#: clutter/clutter-actor.c:4070 +#: ../clutter/clutter-actor.c:4104 msgid "Minimum height set" msgstr "" -#: clutter/clutter-actor.c:4071 +#: ../clutter/clutter-actor.c:4105 msgid "Whether to use the min-height property" msgstr "" -#: clutter/clutter-actor.c:4086 +#: ../clutter/clutter-actor.c:4120 msgid "Natural width set" msgstr "" -#: clutter/clutter-actor.c:4087 +#: ../clutter/clutter-actor.c:4121 msgid "Whether to use the natural-width property" msgstr "" -#: clutter/clutter-actor.c:4104 +#: ../clutter/clutter-actor.c:4138 msgid "Natural height set" msgstr "" -#: clutter/clutter-actor.c:4105 +#: ../clutter/clutter-actor.c:4139 msgid "Whether to use the natural-height property" msgstr "" -#: clutter/clutter-actor.c:4124 +#: ../clutter/clutter-actor.c:4158 msgid "Allocation" msgstr "" -#: clutter/clutter-actor.c:4125 +#: ../clutter/clutter-actor.c:4159 msgid "The actor's allocation" msgstr "" -#: clutter/clutter-actor.c:4181 +#: ../clutter/clutter-actor.c:4215 msgid "Request Mode" msgstr "" -#: clutter/clutter-actor.c:4182 +#: ../clutter/clutter-actor.c:4216 msgid "The actor's request mode" msgstr "" -#: clutter/clutter-actor.c:4197 +#: ../clutter/clutter-actor.c:4231 msgid "Depth" msgstr "" -#: clutter/clutter-actor.c:4198 +#: ../clutter/clutter-actor.c:4232 msgid "Position on the Z axis" msgstr "" -#: clutter/clutter-actor.c:4212 +#: ../clutter/clutter-actor.c:4246 msgid "Opacity" msgstr "" -#: clutter/clutter-actor.c:4213 +#: ../clutter/clutter-actor.c:4247 msgid "Opacity of an actor" msgstr "" -#: clutter/clutter-actor.c:4232 +#: ../clutter/clutter-actor.c:4266 msgid "Offscreen redirect" msgstr "" -#: clutter/clutter-actor.c:4233 +#: ../clutter/clutter-actor.c:4267 msgid "Flags controlling when to flatten the actor into a single image" msgstr "" -#: clutter/clutter-actor.c:4251 +#: ../clutter/clutter-actor.c:4285 msgid "Visible" msgstr "" -#: clutter/clutter-actor.c:4252 +#: ../clutter/clutter-actor.c:4286 msgid "Whether the actor is visible or not" msgstr "" -#: clutter/clutter-actor.c:4267 +#: ../clutter/clutter-actor.c:4301 msgid "Mapped" msgstr "" -#: clutter/clutter-actor.c:4268 +#: ../clutter/clutter-actor.c:4302 msgid "Whether the actor will be painted" msgstr "" -#: clutter/clutter-actor.c:4282 +#: ../clutter/clutter-actor.c:4316 msgid "Realized" msgstr "" -#: clutter/clutter-actor.c:4283 +#: ../clutter/clutter-actor.c:4317 msgid "Whether the actor has been realized" msgstr "" -#: clutter/clutter-actor.c:4299 +#: ../clutter/clutter-actor.c:4333 msgid "Reactive" msgstr "" -#: clutter/clutter-actor.c:4300 +#: ../clutter/clutter-actor.c:4334 msgid "Whether the actor is reactive to events" msgstr "" -#: clutter/clutter-actor.c:4312 +#: ../clutter/clutter-actor.c:4346 msgid "Has Clip" msgstr "" -#: clutter/clutter-actor.c:4313 +#: ../clutter/clutter-actor.c:4347 msgid "Whether the actor has a clip set" msgstr "" -#: clutter/clutter-actor.c:4328 +#: ../clutter/clutter-actor.c:4362 msgid "Clip" msgstr "" -#: clutter/clutter-actor.c:4329 +#: ../clutter/clutter-actor.c:4363 msgid "The clip region for the actor" msgstr "" -#: clutter/clutter-actor.c:4343 clutter/clutter-actor-meta.c:207 -#: clutter/clutter-binding-pool.c:319 clutter/clutter-input-device.c:236 +#: ../clutter/clutter-actor.c:4377 ../clutter/clutter-actor-meta.c:207 +#: ../clutter/clutter-binding-pool.c:319 ../clutter/clutter-input-device.c:236 msgid "Name" msgstr "" -#: clutter/clutter-actor.c:4344 +#: ../clutter/clutter-actor.c:4378 msgid "Name of the actor" msgstr "" -#: clutter/clutter-actor.c:4358 +#: ../clutter/clutter-actor.c:4392 msgid "Scale X" msgstr "" -#: clutter/clutter-actor.c:4359 +#: ../clutter/clutter-actor.c:4393 msgid "Scale factor on the X axis" msgstr "" -#: clutter/clutter-actor.c:4374 +#: ../clutter/clutter-actor.c:4408 msgid "Scale Y" msgstr "" -#: clutter/clutter-actor.c:4375 +#: ../clutter/clutter-actor.c:4409 msgid "Scale factor on the Y axis" msgstr "" -#: clutter/clutter-actor.c:4390 +#: ../clutter/clutter-actor.c:4424 msgid "Scale Center X" msgstr "" -#: clutter/clutter-actor.c:4391 +#: ../clutter/clutter-actor.c:4425 msgid "Horizontal scale center" msgstr "" -#: clutter/clutter-actor.c:4406 +#: ../clutter/clutter-actor.c:4440 msgid "Scale Center Y" msgstr "" -#: clutter/clutter-actor.c:4407 +#: ../clutter/clutter-actor.c:4441 msgid "Vertical scale center" msgstr "" -#: clutter/clutter-actor.c:4422 +#: ../clutter/clutter-actor.c:4456 msgid "Scale Gravity" msgstr "" -#: clutter/clutter-actor.c:4423 +#: ../clutter/clutter-actor.c:4457 msgid "The center of scaling" msgstr "" -#: clutter/clutter-actor.c:4440 +#: ../clutter/clutter-actor.c:4474 msgid "Rotation Angle X" msgstr "" -#: clutter/clutter-actor.c:4441 +#: ../clutter/clutter-actor.c:4475 msgid "The rotation angle on the X axis" msgstr "" -#: clutter/clutter-actor.c:4456 +#: ../clutter/clutter-actor.c:4490 msgid "Rotation Angle Y" msgstr "" -#: clutter/clutter-actor.c:4457 +#: ../clutter/clutter-actor.c:4491 msgid "The rotation angle on the Y axis" msgstr "" -#: clutter/clutter-actor.c:4472 +#: ../clutter/clutter-actor.c:4506 msgid "Rotation Angle Z" msgstr "" -#: clutter/clutter-actor.c:4473 +#: ../clutter/clutter-actor.c:4507 msgid "The rotation angle on the Z axis" msgstr "" -#: clutter/clutter-actor.c:4488 +#: ../clutter/clutter-actor.c:4522 msgid "Rotation Center X" msgstr "" -#: clutter/clutter-actor.c:4489 +#: ../clutter/clutter-actor.c:4523 msgid "The rotation center on the X axis" msgstr "" -#: clutter/clutter-actor.c:4505 +#: ../clutter/clutter-actor.c:4539 msgid "Rotation Center Y" msgstr "" -#: clutter/clutter-actor.c:4506 +#: ../clutter/clutter-actor.c:4540 msgid "The rotation center on the Y axis" msgstr "" -#: clutter/clutter-actor.c:4522 +#: ../clutter/clutter-actor.c:4556 msgid "Rotation Center Z" msgstr "" -#: clutter/clutter-actor.c:4523 +#: ../clutter/clutter-actor.c:4557 msgid "The rotation center on the Z axis" msgstr "" -#: clutter/clutter-actor.c:4539 +#: ../clutter/clutter-actor.c:4573 msgid "Rotation Center Z Gravity" msgstr "" -#: clutter/clutter-actor.c:4540 +#: ../clutter/clutter-actor.c:4574 msgid "Center point for rotation around the Z axis" msgstr "" -#: clutter/clutter-actor.c:4558 +#: ../clutter/clutter-actor.c:4592 msgid "Anchor X" msgstr "" -#: clutter/clutter-actor.c:4559 +#: ../clutter/clutter-actor.c:4593 msgid "X coordinate of the anchor point" msgstr "" -#: clutter/clutter-actor.c:4575 +#: ../clutter/clutter-actor.c:4609 msgid "Anchor Y" msgstr "" -#: clutter/clutter-actor.c:4576 +#: ../clutter/clutter-actor.c:4610 msgid "Y coordinate of the anchor point" msgstr "" -#: clutter/clutter-actor.c:4591 +#: ../clutter/clutter-actor.c:4625 msgid "Anchor Gravity" msgstr "" -#: clutter/clutter-actor.c:4592 +#: ../clutter/clutter-actor.c:4626 msgid "The anchor point as a ClutterGravity" msgstr "" -#: clutter/clutter-actor.c:4611 +#: ../clutter/clutter-actor.c:4645 msgid "Show on set parent" msgstr "" -#: clutter/clutter-actor.c:4612 +#: ../clutter/clutter-actor.c:4646 msgid "Whether the actor is shown when parented" msgstr "" -#: clutter/clutter-actor.c:4632 +#: ../clutter/clutter-actor.c:4666 msgid "Clip to Allocation" msgstr "" -#: clutter/clutter-actor.c:4633 +#: ../clutter/clutter-actor.c:4667 msgid "Sets the clip region to track the actor's allocation" msgstr "" -#: clutter/clutter-actor.c:4643 +#: ../clutter/clutter-actor.c:4677 msgid "Text Direction" msgstr "" -#: clutter/clutter-actor.c:4644 +#: ../clutter/clutter-actor.c:4678 msgid "Direction of the text" msgstr "" -#: clutter/clutter-actor.c:4662 +#: ../clutter/clutter-actor.c:4696 msgid "Has Pointer" msgstr "" -#: clutter/clutter-actor.c:4663 +#: ../clutter/clutter-actor.c:4697 msgid "Whether the actor contains the pointer of an input device" msgstr "" -#: clutter/clutter-actor.c:4680 +#: ../clutter/clutter-actor.c:4714 msgid "Actions" msgstr "" -#: clutter/clutter-actor.c:4681 +#: ../clutter/clutter-actor.c:4715 msgid "Adds an action to the actor" msgstr "" -#: clutter/clutter-actor.c:4695 +#: ../clutter/clutter-actor.c:4729 msgid "Constraints" msgstr "" -#: clutter/clutter-actor.c:4696 +#: ../clutter/clutter-actor.c:4730 msgid "Adds a constraint to the actor" msgstr "" -#: clutter/clutter-actor-meta.c:193 clutter/clutter-child-meta.c:142 +#: ../clutter/clutter-actor.c:4744 +msgid "Effect" +msgstr "" + +#: ../clutter/clutter-actor.c:4745 +msgid "Add an effect to be applied on the actor" +msgstr "" + +#: ../clutter/clutter-actor-meta.c:193 ../clutter/clutter-child-meta.c:142 msgid "Actor" msgstr "" -#: clutter/clutter-actor-meta.c:194 +#: ../clutter/clutter-actor-meta.c:194 msgid "The actor attached to the meta" msgstr "" -#: clutter/clutter-actor-meta.c:208 +#: ../clutter/clutter-actor-meta.c:208 msgid "The name of the meta" msgstr "" -#: clutter/clutter-actor-meta.c:221 clutter/clutter-input-device.c:315 -#: clutter/clutter-shader.c:307 +#: ../clutter/clutter-actor-meta.c:221 ../clutter/clutter-input-device.c:315 +#: ../clutter/deprecated/clutter-shader.c:309 msgid "Enabled" msgstr "" -#: clutter/clutter-actor-meta.c:222 +#: ../clutter/clutter-actor-meta.c:222 msgid "Whether the meta is enabled" msgstr "" -#: clutter/clutter-align-constraint.c:270 -#: clutter/clutter-bind-constraint.c:349 clutter/clutter-clone.c:340 -#: clutter/clutter-snap-constraint.c:321 +#: ../clutter/clutter-align-constraint.c:281 +#: ../clutter/clutter-bind-constraint.c:349 ../clutter/clutter-clone.c:345 +#: ../clutter/clutter-snap-constraint.c:321 msgid "Source" msgstr "" -#: clutter/clutter-align-constraint.c:271 +#: ../clutter/clutter-align-constraint.c:282 msgid "The source of the alignment" msgstr "" -#: clutter/clutter-align-constraint.c:284 +#: ../clutter/clutter-align-constraint.c:295 msgid "Align Axis" msgstr "" -#: clutter/clutter-align-constraint.c:285 +#: ../clutter/clutter-align-constraint.c:296 msgid "The axis to align the position to" msgstr "" -#: clutter/clutter-align-constraint.c:304 -#: clutter/clutter-desaturate-effect.c:304 +#: ../clutter/clutter-align-constraint.c:315 +#: ../clutter/clutter-desaturate-effect.c:304 msgid "Factor" msgstr "" -#: clutter/clutter-align-constraint.c:305 +#: ../clutter/clutter-align-constraint.c:316 msgid "The alignment factor, between 0.0 and 1.0" msgstr "" -#: clutter/clutter-alpha.c:345 clutter/clutter-animation.c:538 -#: clutter/clutter-animator.c:1802 +#: ../clutter/clutter-alpha.c:345 ../clutter/clutter-animation.c:538 +#: ../clutter/clutter-animator.c:1802 msgid "Timeline" msgstr "" -#: clutter/clutter-alpha.c:346 +#: ../clutter/clutter-alpha.c:346 msgid "Timeline used by the alpha" msgstr "" -#: clutter/clutter-alpha.c:361 +#: ../clutter/clutter-alpha.c:361 msgid "Alpha value" msgstr "" -#: clutter/clutter-alpha.c:362 +#: ../clutter/clutter-alpha.c:362 msgid "Alpha value as computed by the alpha" msgstr "" -#: clutter/clutter-alpha.c:382 clutter/clutter-animation.c:494 +#: ../clutter/clutter-alpha.c:382 ../clutter/clutter-animation.c:494 msgid "Mode" msgstr "" -#: clutter/clutter-alpha.c:383 +#: ../clutter/clutter-alpha.c:383 msgid "Progress mode" msgstr "" -#: clutter/clutter-animation.c:478 +#: ../clutter/clutter-animation.c:478 msgid "Object" msgstr "" -#: clutter/clutter-animation.c:479 +#: ../clutter/clutter-animation.c:479 msgid "Object to which the animation applies" msgstr "" -#: clutter/clutter-animation.c:495 +#: ../clutter/clutter-animation.c:495 msgid "The mode of the animation" msgstr "" -#: clutter/clutter-animation.c:509 clutter/clutter-animator.c:1786 -#: clutter/clutter-media.c:194 clutter/clutter-state.c:1486 -#: clutter/clutter-timeline.c:294 +#: ../clutter/clutter-animation.c:509 ../clutter/clutter-animator.c:1786 +#: ../clutter/clutter-media.c:194 ../clutter/clutter-state.c:1486 +#: ../clutter/clutter-timeline.c:294 msgid "Duration" msgstr "" -#: clutter/clutter-animation.c:510 +#: ../clutter/clutter-animation.c:510 msgid "Duration of the animation, in milliseconds" msgstr "" -#: clutter/clutter-animation.c:524 clutter/clutter-timeline.c:263 +#: ../clutter/clutter-animation.c:524 ../clutter/clutter-timeline.c:263 msgid "Loop" msgstr "" -#: clutter/clutter-animation.c:525 +#: ../clutter/clutter-animation.c:525 msgid "Whether the animation should loop" msgstr "" -#: clutter/clutter-animation.c:539 +#: ../clutter/clutter-animation.c:539 msgid "The timeline used by the animation" msgstr "" -#: clutter/clutter-animation.c:552 clutter/clutter-behaviour.c:304 +#: ../clutter/clutter-animation.c:552 +#: ../clutter/deprecated/clutter-behaviour.c:240 msgid "Alpha" msgstr "" -#: clutter/clutter-animation.c:553 +#: ../clutter/clutter-animation.c:553 msgid "The alpha used by the animation" msgstr "" -#: clutter/clutter-animator.c:1787 +#: ../clutter/clutter-animator.c:1787 msgid "The duration of the animation" msgstr "" -#: clutter/clutter-animator.c:1803 +#: ../clutter/clutter-animator.c:1803 msgid "The timeline of the animation" msgstr "" -#: clutter/clutter-behaviour.c:305 -msgid "Alpha Object to drive the behaviour" +#: ../clutter/clutter-backend.c:333 +msgid "Unable to initialize the Clutter backend" msgstr "" -#: clutter/clutter-behaviour-depth.c:178 -msgid "Start Depth" +#: ../clutter/clutter-backend.c:407 +#, c-format +msgid "The backend of type '%s' does not support creating multiple stages" msgstr "" -#: clutter/clutter-behaviour-depth.c:179 -msgid "Initial depth to apply" -msgstr "" - -#: clutter/clutter-behaviour-depth.c:194 -msgid "End Depth" -msgstr "" - -#: clutter/clutter-behaviour-depth.c:195 -msgid "Final depth to apply" -msgstr "" - -#: clutter/clutter-behaviour-ellipse.c:397 -msgid "Start Angle" -msgstr "" - -#: clutter/clutter-behaviour-ellipse.c:398 -#: clutter/clutter-behaviour-rotate.c:280 -msgid "Initial angle" -msgstr "" - -#: clutter/clutter-behaviour-ellipse.c:413 -msgid "End Angle" -msgstr "" - -#: clutter/clutter-behaviour-ellipse.c:414 -#: clutter/clutter-behaviour-rotate.c:298 -msgid "Final angle" -msgstr "" - -#: clutter/clutter-behaviour-ellipse.c:429 -msgid "Angle x tilt" -msgstr "" - -#: clutter/clutter-behaviour-ellipse.c:430 -msgid "Tilt of the ellipse around x axis" -msgstr "" - -#: clutter/clutter-behaviour-ellipse.c:445 -msgid "Angle y tilt" -msgstr "" - -#: clutter/clutter-behaviour-ellipse.c:446 -msgid "Tilt of the ellipse around y axis" -msgstr "" - -#: clutter/clutter-behaviour-ellipse.c:461 -msgid "Angle z tilt" -msgstr "" - -#: clutter/clutter-behaviour-ellipse.c:462 -msgid "Tilt of the ellipse around z axis" -msgstr "" - -#: clutter/clutter-behaviour-ellipse.c:478 -msgid "Width of the ellipse" -msgstr "" - -#: clutter/clutter-behaviour-ellipse.c:494 -msgid "Height of ellipse" -msgstr "" - -#: clutter/clutter-behaviour-ellipse.c:509 -msgid "Center" -msgstr "" - -#: clutter/clutter-behaviour-ellipse.c:510 -msgid "Center of ellipse" -msgstr "" - -#: clutter/clutter-behaviour-ellipse.c:524 -#: clutter/clutter-behaviour-rotate.c:333 clutter/clutter-timeline.c:310 -msgid "Direction" -msgstr "" - -#: clutter/clutter-behaviour-ellipse.c:525 -#: clutter/clutter-behaviour-rotate.c:334 -msgid "Direction of rotation" -msgstr "" - -#: clutter/clutter-behaviour-opacity.c:181 -msgid "Opacity Start" -msgstr "" - -#: clutter/clutter-behaviour-opacity.c:182 -msgid "Initial opacity level" -msgstr "" - -#: clutter/clutter-behaviour-opacity.c:199 -msgid "Opacity End" -msgstr "" - -#: clutter/clutter-behaviour-opacity.c:200 -msgid "Final opacity level" -msgstr "" - -#: clutter/clutter-behaviour-path.c:222 clutter/clutter-path-constraint.c:212 -msgid "Path" -msgstr "" - -#: clutter/clutter-behaviour-path.c:223 -msgid "The ClutterPath object representing the path to animate along" -msgstr "" - -#: clutter/clutter-behaviour-rotate.c:279 -msgid "Angle Begin" -msgstr "" - -#: clutter/clutter-behaviour-rotate.c:297 -msgid "Angle End" -msgstr "" - -#: clutter/clutter-behaviour-rotate.c:315 -msgid "Axis" -msgstr "" - -#: clutter/clutter-behaviour-rotate.c:316 -msgid "Axis of rotation" -msgstr "" - -#: clutter/clutter-behaviour-rotate.c:351 -msgid "Center X" -msgstr "" - -#: clutter/clutter-behaviour-rotate.c:352 -msgid "X coordinate of the center of rotation" -msgstr "" - -#: clutter/clutter-behaviour-rotate.c:369 -msgid "Center Y" -msgstr "" - -#: clutter/clutter-behaviour-rotate.c:370 -msgid "Y coordinate of the center of rotation" -msgstr "" - -#: clutter/clutter-behaviour-rotate.c:387 -msgid "Center Z" -msgstr "" - -#: clutter/clutter-behaviour-rotate.c:388 -msgid "Z coordinate of the center of rotation" -msgstr "" - -#: clutter/clutter-behaviour-scale.c:222 -msgid "X Start Scale" -msgstr "" - -#: clutter/clutter-behaviour-scale.c:223 -msgid "Initial scale on the X axis" -msgstr "" - -#: clutter/clutter-behaviour-scale.c:241 -msgid "X End Scale" -msgstr "" - -#: clutter/clutter-behaviour-scale.c:242 -msgid "Final scale on the X axis" -msgstr "" - -#: clutter/clutter-behaviour-scale.c:260 -msgid "Y Start Scale" -msgstr "" - -#: clutter/clutter-behaviour-scale.c:261 -msgid "Initial scale on the Y axis" -msgstr "" - -#: clutter/clutter-behaviour-scale.c:279 -msgid "Y End Scale" -msgstr "" - -#: clutter/clutter-behaviour-scale.c:280 -msgid "Final scale on the Y axis" -msgstr "" - -#: clutter/clutter-bind-constraint.c:350 +#: ../clutter/clutter-bind-constraint.c:350 msgid "The source of the binding" msgstr "" -#: clutter/clutter-bind-constraint.c:363 +#: ../clutter/clutter-bind-constraint.c:363 msgid "Coordinate" msgstr "" -#: clutter/clutter-bind-constraint.c:364 +#: ../clutter/clutter-bind-constraint.c:364 msgid "The coordinate to bind" msgstr "" -#: clutter/clutter-bind-constraint.c:378 clutter/clutter-path-constraint.c:226 -#: clutter/clutter-snap-constraint.c:366 +#: ../clutter/clutter-bind-constraint.c:378 +#: ../clutter/clutter-path-constraint.c:226 +#: ../clutter/clutter-snap-constraint.c:366 msgid "Offset" msgstr "" -#: clutter/clutter-bind-constraint.c:379 +#: ../clutter/clutter-bind-constraint.c:379 msgid "The offset in pixels to apply to the binding" msgstr "" -#: clutter/clutter-binding-pool.c:320 +#: ../clutter/clutter-binding-pool.c:320 msgid "The unique name of the binding pool" msgstr "" -#: clutter/clutter-bin-layout.c:261 clutter/clutter-bin-layout.c:585 -#: clutter/clutter-box-layout.c:395 clutter/clutter-table-layout.c:652 +#: ../clutter/clutter-bin-layout.c:261 ../clutter/clutter-bin-layout.c:585 +#: ../clutter/clutter-box-layout.c:395 ../clutter/clutter-table-layout.c:652 msgid "Horizontal Alignment" msgstr "" -#: clutter/clutter-bin-layout.c:262 +#: ../clutter/clutter-bin-layout.c:262 msgid "Horizontal alignment for the actor inside the layout manager" msgstr "" -#: clutter/clutter-bin-layout.c:270 clutter/clutter-bin-layout.c:602 -#: clutter/clutter-box-layout.c:404 clutter/clutter-table-layout.c:667 +#: ../clutter/clutter-bin-layout.c:270 ../clutter/clutter-bin-layout.c:602 +#: ../clutter/clutter-box-layout.c:404 ../clutter/clutter-table-layout.c:667 msgid "Vertical Alignment" msgstr "" -#: clutter/clutter-bin-layout.c:271 +#: ../clutter/clutter-bin-layout.c:271 msgid "Vertical alignment for the actor inside the layout manager" msgstr "" -#: clutter/clutter-bin-layout.c:586 +#: ../clutter/clutter-bin-layout.c:586 msgid "Default horizontal alignment for the actors inside the layout manager" msgstr "" -#: clutter/clutter-bin-layout.c:603 +#: ../clutter/clutter-bin-layout.c:603 msgid "Default vertical alignment for the actors inside the layout manager" msgstr "" -#: clutter/clutter-box.c:544 +#: ../clutter/clutter-box.c:544 msgid "Layout Manager" msgstr "" -#: clutter/clutter-box.c:545 +#: ../clutter/clutter-box.c:545 msgid "The layout manager used by the box" msgstr "" -#: clutter/clutter-box.c:564 clutter/clutter-rectangle.c:267 -#: clutter/clutter-stage.c:1765 +#: ../clutter/clutter-box.c:564 ../clutter/clutter-rectangle.c:267 +#: ../clutter/clutter-stage.c:1790 msgid "Color" msgstr "" -#: clutter/clutter-box.c:565 +#: ../clutter/clutter-box.c:565 msgid "The background color of the box" msgstr "" -#: clutter/clutter-box.c:579 +#: ../clutter/clutter-box.c:579 msgid "Color Set" msgstr "" -#: clutter/clutter-box.c:580 +#: ../clutter/clutter-box.c:580 msgid "Whether the background color is set" msgstr "" -#: clutter/clutter-box-layout.c:370 +#: ../clutter/clutter-box-layout.c:370 msgid "Expand" msgstr "" -#: clutter/clutter-box-layout.c:371 +#: ../clutter/clutter-box-layout.c:371 msgid "Allocate extra space for the child" msgstr "" -#: clutter/clutter-box-layout.c:377 clutter/clutter-table-layout.c:631 +#: ../clutter/clutter-box-layout.c:377 ../clutter/clutter-table-layout.c:631 msgid "Horizontal Fill" msgstr "" -#: clutter/clutter-box-layout.c:378 clutter/clutter-table-layout.c:632 +#: ../clutter/clutter-box-layout.c:378 ../clutter/clutter-table-layout.c:632 msgid "" "Whether the child should receive priority when the container is allocating " "spare space on the horizontal axis" msgstr "" -#: clutter/clutter-box-layout.c:386 clutter/clutter-table-layout.c:638 +#: ../clutter/clutter-box-layout.c:386 ../clutter/clutter-table-layout.c:638 msgid "Vertical Fill" msgstr "" -#: clutter/clutter-box-layout.c:387 clutter/clutter-table-layout.c:639 +#: ../clutter/clutter-box-layout.c:387 ../clutter/clutter-table-layout.c:639 msgid "" "Whether the child should receive priority when the container is allocating " "spare space on the vertical axis" msgstr "" -#: clutter/clutter-box-layout.c:396 clutter/clutter-table-layout.c:653 +#: ../clutter/clutter-box-layout.c:396 ../clutter/clutter-table-layout.c:653 msgid "Horizontal alignment of the actor within the cell" msgstr "" -#: clutter/clutter-box-layout.c:405 clutter/clutter-table-layout.c:668 +#: ../clutter/clutter-box-layout.c:405 ../clutter/clutter-table-layout.c:668 msgid "Vertical alignment of the actor within the cell" msgstr "" -#: clutter/clutter-box-layout.c:1305 +#: ../clutter/clutter-box-layout.c:1303 msgid "Vertical" msgstr "" -#: clutter/clutter-box-layout.c:1306 +#: ../clutter/clutter-box-layout.c:1304 msgid "Whether the layout should be vertical, rather than horizontal" msgstr "" -#: clutter/clutter-box-layout.c:1321 clutter/clutter-flow-layout.c:901 +#: ../clutter/clutter-box-layout.c:1319 ../clutter/clutter-flow-layout.c:901 msgid "Homogeneous" msgstr "" -#: clutter/clutter-box-layout.c:1322 +#: ../clutter/clutter-box-layout.c:1320 msgid "" "Whether the layout should be homogeneous, i.e. all childs get the same size" msgstr "" -#: clutter/clutter-box-layout.c:1337 +#: ../clutter/clutter-box-layout.c:1335 msgid "Pack Start" msgstr "" -#: clutter/clutter-box-layout.c:1338 +#: ../clutter/clutter-box-layout.c:1336 msgid "Whether to pack items at the start of the box" msgstr "" -#: clutter/clutter-box-layout.c:1351 +#: ../clutter/clutter-box-layout.c:1349 msgid "Spacing" msgstr "" -#: clutter/clutter-box-layout.c:1352 +#: ../clutter/clutter-box-layout.c:1350 msgid "Spacing between children" msgstr "" -#: clutter/clutter-box-layout.c:1366 clutter/clutter-table-layout.c:1742 +#: ../clutter/clutter-box-layout.c:1364 ../clutter/clutter-table-layout.c:1742 msgid "Use Animations" msgstr "" -#: clutter/clutter-box-layout.c:1367 clutter/clutter-table-layout.c:1743 +#: ../clutter/clutter-box-layout.c:1365 ../clutter/clutter-table-layout.c:1743 msgid "Whether layout changes should be animated" msgstr "" -#: clutter/clutter-box-layout.c:1388 clutter/clutter-table-layout.c:1764 +#: ../clutter/clutter-box-layout.c:1386 ../clutter/clutter-table-layout.c:1764 msgid "Easing Mode" msgstr "" -#: clutter/clutter-box-layout.c:1389 clutter/clutter-table-layout.c:1765 +#: ../clutter/clutter-box-layout.c:1387 ../clutter/clutter-table-layout.c:1765 msgid "The easing mode of the animations" msgstr "" -#: clutter/clutter-box-layout.c:1406 clutter/clutter-table-layout.c:1782 +#: ../clutter/clutter-box-layout.c:1404 ../clutter/clutter-table-layout.c:1782 msgid "Easing Duration" msgstr "" -#: clutter/clutter-box-layout.c:1407 clutter/clutter-table-layout.c:1783 +#: ../clutter/clutter-box-layout.c:1405 ../clutter/clutter-table-layout.c:1783 msgid "The duration of the animations" msgstr "" -#: clutter/clutter-cairo-texture.c:582 +#: ../clutter/clutter-cairo-texture.c:582 msgid "Surface Width" msgstr "" -#: clutter/clutter-cairo-texture.c:583 +#: ../clutter/clutter-cairo-texture.c:583 msgid "The width of the Cairo surface" msgstr "" -#: clutter/clutter-cairo-texture.c:597 +#: ../clutter/clutter-cairo-texture.c:597 msgid "Surface Height" msgstr "" -#: clutter/clutter-cairo-texture.c:598 +#: ../clutter/clutter-cairo-texture.c:598 msgid "The height of the Cairo surface" msgstr "" -#: clutter/clutter-cairo-texture.c:615 +#: ../clutter/clutter-cairo-texture.c:615 msgid "Auto Resize" msgstr "" -#: clutter/clutter-cairo-texture.c:616 +#: ../clutter/clutter-cairo-texture.c:616 msgid "Whether the surface should match the allocation" msgstr "" -#: clutter/clutter-child-meta.c:127 +#: ../clutter/clutter-child-meta.c:127 msgid "Container" msgstr "" -#: clutter/clutter-child-meta.c:128 +#: ../clutter/clutter-child-meta.c:128 msgid "The container that created this data" msgstr "" -#: clutter/clutter-child-meta.c:143 +#: ../clutter/clutter-child-meta.c:143 msgid "The actor wrapped by this data" msgstr "" -#: clutter/clutter-click-action.c:542 +#: ../clutter/clutter-click-action.c:542 msgid "Pressed" msgstr "" -#: clutter/clutter-click-action.c:543 +#: ../clutter/clutter-click-action.c:543 msgid "Whether the clickable should be in pressed state" msgstr "" -#: clutter/clutter-click-action.c:556 +#: ../clutter/clutter-click-action.c:556 msgid "Held" msgstr "" -#: clutter/clutter-click-action.c:557 +#: ../clutter/clutter-click-action.c:557 msgid "Whether the clickable has a grab" msgstr "" -#: clutter/clutter-click-action.c:574 clutter/clutter-settings.c:573 +#: ../clutter/clutter-click-action.c:574 ../clutter/clutter-settings.c:598 msgid "Long Press Duration" msgstr "" -#: clutter/clutter-click-action.c:575 +#: ../clutter/clutter-click-action.c:575 msgid "The minimum duration of a long press to recognize the gesture" msgstr "" -#: clutter/clutter-click-action.c:593 +#: ../clutter/clutter-click-action.c:593 msgid "Long Press Threshold" msgstr "" -#: clutter/clutter-click-action.c:594 +#: ../clutter/clutter-click-action.c:594 msgid "The maximum threshold before a long press is cancelled" msgstr "" -#: clutter/clutter-clone.c:341 +#: ../clutter/clutter-clone.c:346 msgid "Specifies the actor to be cloned" msgstr "" -#: clutter/clutter-colorize-effect.c:307 +#: ../clutter/clutter-colorize-effect.c:307 msgid "Tint" msgstr "" -#: clutter/clutter-colorize-effect.c:308 +#: ../clutter/clutter-colorize-effect.c:308 msgid "The tint to apply" msgstr "" -#: clutter/clutter-deform-effect.c:527 +#: ../clutter/clutter-deform-effect.c:547 msgid "Horizontal Tiles" msgstr "" -#: clutter/clutter-deform-effect.c:528 +#: ../clutter/clutter-deform-effect.c:548 msgid "The number of horizontal tiles" msgstr "" -#: clutter/clutter-deform-effect.c:543 +#: ../clutter/clutter-deform-effect.c:563 msgid "Vertical Tiles" msgstr "" -#: clutter/clutter-deform-effect.c:544 +#: ../clutter/clutter-deform-effect.c:564 msgid "The number of vertical tiles" msgstr "" -#: clutter/clutter-deform-effect.c:561 +#: ../clutter/clutter-deform-effect.c:581 msgid "Back Material" msgstr "" -#: clutter/clutter-deform-effect.c:562 +#: ../clutter/clutter-deform-effect.c:582 msgid "The material to be used when painting the back of the actor" msgstr "" -#: clutter/clutter-desaturate-effect.c:305 +#: ../clutter/clutter-desaturate-effect.c:305 msgid "The desaturation factor" msgstr "" -#: clutter/clutter-device-manager.c:131 clutter/clutter-input-device.c:344 -#: clutter/x11/clutter-keymap-x11.c:316 +#: ../clutter/clutter-device-manager.c:131 +#: ../clutter/clutter-input-device.c:344 +#: ../clutter/x11/clutter-keymap-x11.c:316 msgid "Backend" msgstr "" -#: clutter/clutter-device-manager.c:132 +#: ../clutter/clutter-device-manager.c:132 msgid "The ClutterBackend of the device manager" msgstr "" -#: clutter/clutter-drag-action.c:596 +#: ../clutter/clutter-drag-action.c:596 msgid "Horizontal Drag Threshold" msgstr "" -#: clutter/clutter-drag-action.c:597 +#: ../clutter/clutter-drag-action.c:597 msgid "The horizontal amount of pixels required to start dragging" msgstr "" -#: clutter/clutter-drag-action.c:624 +#: ../clutter/clutter-drag-action.c:624 msgid "Vertical Drag Threshold" msgstr "" -#: clutter/clutter-drag-action.c:625 +#: ../clutter/clutter-drag-action.c:625 msgid "The vertical amount of pixels required to start dragging" msgstr "" -#: clutter/clutter-drag-action.c:646 +#: ../clutter/clutter-drag-action.c:646 msgid "Drag Handle" msgstr "" -#: clutter/clutter-drag-action.c:647 +#: ../clutter/clutter-drag-action.c:647 msgid "The actor that is being dragged" msgstr "" -#: clutter/clutter-drag-action.c:660 +#: ../clutter/clutter-drag-action.c:660 msgid "Drag Axis" msgstr "" -#: clutter/clutter-drag-action.c:661 +#: ../clutter/clutter-drag-action.c:661 msgid "Constraints the dragging to an axis" msgstr "" -#: clutter/clutter-flow-layout.c:885 +#: ../clutter/clutter-flow-layout.c:885 msgid "Orientation" msgstr "" -#: clutter/clutter-flow-layout.c:886 +#: ../clutter/clutter-flow-layout.c:886 msgid "The orientation of the layout" msgstr "" -#: clutter/clutter-flow-layout.c:902 +#: ../clutter/clutter-flow-layout.c:902 msgid "Whether each item should receive the same allocation" msgstr "" -#: clutter/clutter-flow-layout.c:917 clutter/clutter-table-layout.c:1713 +#: ../clutter/clutter-flow-layout.c:917 ../clutter/clutter-table-layout.c:1713 msgid "Column Spacing" msgstr "" -#: clutter/clutter-flow-layout.c:918 +#: ../clutter/clutter-flow-layout.c:918 msgid "The spacing between columns" msgstr "" -#: clutter/clutter-flow-layout.c:934 clutter/clutter-table-layout.c:1727 +#: ../clutter/clutter-flow-layout.c:934 ../clutter/clutter-table-layout.c:1727 msgid "Row Spacing" msgstr "" -#: clutter/clutter-flow-layout.c:935 +#: ../clutter/clutter-flow-layout.c:935 msgid "The spacing between rows" msgstr "" -#: clutter/clutter-flow-layout.c:949 +#: ../clutter/clutter-flow-layout.c:949 msgid "Minimum Column Width" msgstr "" -#: clutter/clutter-flow-layout.c:950 +#: ../clutter/clutter-flow-layout.c:950 msgid "Minimum width for each column" msgstr "" -#: clutter/clutter-flow-layout.c:965 +#: ../clutter/clutter-flow-layout.c:965 msgid "Maximum Column Width" msgstr "" -#: clutter/clutter-flow-layout.c:966 +#: ../clutter/clutter-flow-layout.c:966 msgid "Maximum width for each column" msgstr "" -#: clutter/clutter-flow-layout.c:980 +#: ../clutter/clutter-flow-layout.c:980 msgid "Minimum Row Height" msgstr "" -#: clutter/clutter-flow-layout.c:981 +#: ../clutter/clutter-flow-layout.c:981 msgid "Minimum height for each row" msgstr "" -#: clutter/clutter-flow-layout.c:996 +#: ../clutter/clutter-flow-layout.c:996 msgid "Maximum Row Height" msgstr "" -#: clutter/clutter-flow-layout.c:997 +#: ../clutter/clutter-flow-layout.c:997 msgid "Maximum height for each row" msgstr "" -#: clutter/clutter-input-device.c:220 +#: ../clutter/clutter-input-device.c:220 msgid "Id" msgstr "" -#: clutter/clutter-input-device.c:221 +#: ../clutter/clutter-input-device.c:221 msgid "Unique identifier of the device" msgstr "" -#: clutter/clutter-input-device.c:237 +#: ../clutter/clutter-input-device.c:237 msgid "The name of the device" msgstr "" -#: clutter/clutter-input-device.c:251 +#: ../clutter/clutter-input-device.c:251 msgid "Device Type" msgstr "" -#: clutter/clutter-input-device.c:252 +#: ../clutter/clutter-input-device.c:252 msgid "The type of the device" msgstr "" -#: clutter/clutter-input-device.c:267 +#: ../clutter/clutter-input-device.c:267 msgid "Device Manager" msgstr "" -#: clutter/clutter-input-device.c:268 +#: ../clutter/clutter-input-device.c:268 msgid "The device manager instance" msgstr "" -#: clutter/clutter-input-device.c:281 +#: ../clutter/clutter-input-device.c:281 msgid "Device Mode" msgstr "" -#: clutter/clutter-input-device.c:282 +#: ../clutter/clutter-input-device.c:282 msgid "The mode of the device" msgstr "" -#: clutter/clutter-input-device.c:296 +#: ../clutter/clutter-input-device.c:296 msgid "Has Cursor" msgstr "" -#: clutter/clutter-input-device.c:297 +#: ../clutter/clutter-input-device.c:297 msgid "Whether the device has a cursor" msgstr "" -#: clutter/clutter-input-device.c:316 +#: ../clutter/clutter-input-device.c:316 msgid "Whether the device is enabled" msgstr "" -#: clutter/clutter-input-device.c:329 +#: ../clutter/clutter-input-device.c:329 msgid "Number of Axes" msgstr "" -#: clutter/clutter-input-device.c:330 +#: ../clutter/clutter-input-device.c:330 msgid "The number of axes on the device" msgstr "" -#: clutter/clutter-input-device.c:345 +#: ../clutter/clutter-input-device.c:345 msgid "The backend instance" msgstr "" -#: clutter/clutter-interval.c:397 +#: ../clutter/clutter-interval.c:397 msgid "Value Type" msgstr "" -#: clutter/clutter-interval.c:398 +#: ../clutter/clutter-interval.c:398 msgid "The type of the values in the interval" msgstr "" -#: clutter/clutter-layout-meta.c:117 +#: ../clutter/clutter-layout-meta.c:117 msgid "Manager" msgstr "" -#: clutter/clutter-layout-meta.c:118 +#: ../clutter/clutter-layout-meta.c:118 msgid "The manager that created this data" msgstr "" -#: clutter/clutter-main.c:490 +#. Translators: Leave this UNTRANSLATED if your language is +#. * left-to-right. If your language is right-to-left +#. * (e.g. Hebrew, Arabic), translate it to "default:RTL". +#. * +#. * Do NOT translate it to non-English e.g. "predefinito:LTR"! If +#. * it isn't default:LTR or default:RTL it will not work. +#. +#: ../clutter/clutter-main.c:752 msgid "default:LTR" msgstr "" -#: clutter/clutter-main.c:1321 +#: ../clutter/clutter-main.c:1610 msgid "Show frames per second" msgstr "" -#: clutter/clutter-main.c:1323 +#: ../clutter/clutter-main.c:1612 msgid "Default frame rate" msgstr "" -#: clutter/clutter-main.c:1325 +#: ../clutter/clutter-main.c:1614 msgid "Make all warnings fatal" msgstr "" -#: clutter/clutter-main.c:1328 +#: ../clutter/clutter-main.c:1617 msgid "Direction for the text" msgstr "" -#: clutter/clutter-main.c:1331 +#: ../clutter/clutter-main.c:1620 msgid "Disable mipmapping on text" msgstr "" -#: clutter/clutter-main.c:1334 +#: ../clutter/clutter-main.c:1623 msgid "Use 'fuzzy' picking" msgstr "" -#: clutter/clutter-main.c:1337 +#: ../clutter/clutter-main.c:1626 msgid "Clutter debugging flags to set" msgstr "" -#: clutter/clutter-main.c:1339 +#: ../clutter/clutter-main.c:1628 msgid "Clutter debugging flags to unset" msgstr "" -#: clutter/clutter-main.c:1343 +#: ../clutter/clutter-main.c:1632 msgid "Clutter profiling flags to set" msgstr "" -#: clutter/clutter-main.c:1345 +#: ../clutter/clutter-main.c:1634 msgid "Clutter profiling flags to unset" msgstr "" -#: clutter/clutter-main.c:1348 +#: ../clutter/clutter-main.c:1637 msgid "Enable accessibility" msgstr "" -#: clutter/clutter-main.c:1530 +#: ../clutter/clutter-main.c:1829 msgid "Clutter Options" msgstr "" -#: clutter/clutter-main.c:1531 +#: ../clutter/clutter-main.c:1830 msgid "Show Clutter Options" msgstr "" -#: clutter/clutter-media.c:77 +#: ../clutter/clutter-media.c:77 msgid "URI" msgstr "" -#: clutter/clutter-media.c:78 +#: ../clutter/clutter-media.c:78 msgid "URI of a media file" msgstr "" -#: clutter/clutter-media.c:91 +#: ../clutter/clutter-media.c:91 msgid "Playing" msgstr "" -#: clutter/clutter-media.c:92 +#: ../clutter/clutter-media.c:92 msgid "Whether the actor is playing" msgstr "" -#: clutter/clutter-media.c:106 +#: ../clutter/clutter-media.c:106 msgid "Progress" msgstr "" -#: clutter/clutter-media.c:107 +#: ../clutter/clutter-media.c:107 msgid "Current progress of the playback" msgstr "" -#: clutter/clutter-media.c:120 +#: ../clutter/clutter-media.c:120 msgid "Subtitle URI" msgstr "" -#: clutter/clutter-media.c:121 +#: ../clutter/clutter-media.c:121 msgid "URI of a subtitle file" msgstr "" -#: clutter/clutter-media.c:136 +#: ../clutter/clutter-media.c:136 msgid "Subtitle Font Name" msgstr "" -#: clutter/clutter-media.c:137 +#: ../clutter/clutter-media.c:137 msgid "The font used to display subtitles" msgstr "" -#: clutter/clutter-media.c:151 +#: ../clutter/clutter-media.c:151 msgid "Audio Volume" msgstr "" -#: clutter/clutter-media.c:152 +#: ../clutter/clutter-media.c:152 msgid "The volume of the audio" msgstr "" -#: clutter/clutter-media.c:165 +#: ../clutter/clutter-media.c:165 msgid "Can Seek" msgstr "" -#: clutter/clutter-media.c:166 +#: ../clutter/clutter-media.c:166 msgid "Whether the current stream is seekable" msgstr "" -#: clutter/clutter-media.c:180 +#: ../clutter/clutter-media.c:180 msgid "Buffer Fill" msgstr "" -#: clutter/clutter-media.c:181 +#: ../clutter/clutter-media.c:181 msgid "The fill level of the buffer" msgstr "" -#: clutter/clutter-media.c:195 +#: ../clutter/clutter-media.c:195 msgid "The duration of the stream, in seconds" msgstr "" -#: clutter/clutter-path-constraint.c:213 +#: ../clutter/clutter-path-constraint.c:212 +#: ../clutter/deprecated/clutter-behaviour-path.c:224 +msgid "Path" +msgstr "" + +#: ../clutter/clutter-path-constraint.c:213 msgid "The path used to constrain an actor" msgstr "" -#: clutter/clutter-path-constraint.c:227 +#: ../clutter/clutter-path-constraint.c:227 msgid "The offset along the path, between -1.0 and 2.0" msgstr "" -#: clutter/clutter-rectangle.c:268 +#: ../clutter/clutter-rectangle.c:268 msgid "The color of the rectangle" msgstr "" -#: clutter/clutter-rectangle.c:281 +#: ../clutter/clutter-rectangle.c:281 msgid "Border Color" msgstr "" -#: clutter/clutter-rectangle.c:282 +#: ../clutter/clutter-rectangle.c:282 msgid "The color of the border of the rectangle" msgstr "" -#: clutter/clutter-rectangle.c:297 +#: ../clutter/clutter-rectangle.c:297 msgid "Border Width" msgstr "" -#: clutter/clutter-rectangle.c:298 +#: ../clutter/clutter-rectangle.c:298 msgid "The width of the border of the rectangle" msgstr "" -#: clutter/clutter-rectangle.c:312 +#: ../clutter/clutter-rectangle.c:312 msgid "Has Border" msgstr "" -#: clutter/clutter-rectangle.c:313 +#: ../clutter/clutter-rectangle.c:313 msgid "Whether the rectangle should have a border" msgstr "" -#: clutter/clutter-script.c:434 +#: ../clutter/clutter-script.c:434 msgid "Filename Set" msgstr "" -#: clutter/clutter-script.c:435 +#: ../clutter/clutter-script.c:435 msgid "Whether the :filename property is set" msgstr "" -#: clutter/clutter-script.c:449 clutter/clutter-texture.c:1081 +#: ../clutter/clutter-script.c:449 ../clutter/clutter-texture.c:1071 msgid "Filename" msgstr "" -#: clutter/clutter-script.c:450 +#: ../clutter/clutter-script.c:450 msgid "The path of the currently parsed file" msgstr "" -#: clutter/clutter-settings.c:414 +#: ../clutter/clutter-settings.c:439 msgid "Double Click Time" msgstr "" -#: clutter/clutter-settings.c:415 +#: ../clutter/clutter-settings.c:440 msgid "The time between clicks necessary to detect a multiple click" msgstr "" -#: clutter/clutter-settings.c:430 +#: ../clutter/clutter-settings.c:455 msgid "Double Click Distance" msgstr "" -#: clutter/clutter-settings.c:431 +#: ../clutter/clutter-settings.c:456 msgid "The distance between clicks necessary to detect a multiple click" msgstr "" -#: clutter/clutter-settings.c:446 +#: ../clutter/clutter-settings.c:471 msgid "Drag Threshold" msgstr "" -#: clutter/clutter-settings.c:447 +#: ../clutter/clutter-settings.c:472 msgid "The distance the cursor should travel before starting to drag" msgstr "" -#: clutter/clutter-settings.c:462 clutter/clutter-text.c:2939 +#: ../clutter/clutter-settings.c:487 ../clutter/clutter-text.c:2995 msgid "Font Name" msgstr "" -#: clutter/clutter-settings.c:463 +#: ../clutter/clutter-settings.c:488 msgid "" "The description of the default font, as one that could be parsed by Pango" msgstr "" -#: clutter/clutter-settings.c:478 +#: ../clutter/clutter-settings.c:503 msgid "Font Antialias" msgstr "" -#: clutter/clutter-settings.c:479 +#: ../clutter/clutter-settings.c:504 msgid "" "Whether to use antialiasing (1 to enable, 0 to disable, and -1 to use the " "default)" msgstr "" -#: clutter/clutter-settings.c:495 +#: ../clutter/clutter-settings.c:520 msgid "Font DPI" msgstr "" -#: clutter/clutter-settings.c:496 +#: ../clutter/clutter-settings.c:521 msgid "" "The resolution of the font, in 1024 * dots/inch, or -1 to use the default" msgstr "" -#: clutter/clutter-settings.c:512 +#: ../clutter/clutter-settings.c:537 msgid "Font Hinting" msgstr "" -#: clutter/clutter-settings.c:513 +#: ../clutter/clutter-settings.c:538 msgid "" "Whether to use hinting (1 to enable, 0 to disable and -1 to use the default)" msgstr "" -#: clutter/clutter-settings.c:534 +#: ../clutter/clutter-settings.c:559 msgid "Font Hint Style" msgstr "" -#: clutter/clutter-settings.c:535 +#: ../clutter/clutter-settings.c:560 msgid "The style of hinting (hintnone, hintslight, hintmedium, hintfull)" msgstr "" -#: clutter/clutter-settings.c:556 +#: ../clutter/clutter-settings.c:581 msgid "Font Subpixel Order" msgstr "" -#: clutter/clutter-settings.c:557 +#: ../clutter/clutter-settings.c:582 msgid "The type of subpixel antialiasing (none, rgb, bgr, vrgb, vbgr)" msgstr "" -#: clutter/clutter-settings.c:574 +#: ../clutter/clutter-settings.c:599 msgid "The minimum duration for a long press gesture to be recognized" msgstr "" -#: clutter/clutter-settings.c:581 +#: ../clutter/clutter-settings.c:606 msgid "Fontconfig configuration timestamp" msgstr "" -#: clutter/clutter-settings.c:582 +#: ../clutter/clutter-settings.c:607 msgid "Timestamp of the current fontconfig configuration" msgstr "" -#: clutter/clutter-shader.c:255 -msgid "Vertex Source" +#: ../clutter/clutter-settings.c:624 +msgid "Password Hint Time" msgstr "" -#: clutter/clutter-shader.c:256 -msgid "Source of vertex shader" +#: ../clutter/clutter-settings.c:625 +msgid "How long to show the last input character in hidden entries" msgstr "" -#: clutter/clutter-shader.c:272 -msgid "Fragment Source" -msgstr "" - -#: clutter/clutter-shader.c:273 -msgid "Source of fragment shader" -msgstr "" - -#: clutter/clutter-shader.c:290 -msgid "Compiled" -msgstr "" - -#: clutter/clutter-shader.c:291 -msgid "Whether the shader is compiled and linked" -msgstr "" - -#: clutter/clutter-shader.c:308 -msgid "Whether the shader is enabled" -msgstr "" - -#: clutter/clutter-shader.c:519 -#, c-format -msgid "%s compilation failed: %s" -msgstr "" - -#: clutter/clutter-shader.c:520 -msgid "Vertex shader" -msgstr "" - -#: clutter/clutter-shader.c:521 -msgid "Fragment shader" -msgstr "" - -#: clutter/clutter-shader-effect.c:415 +#: ../clutter/clutter-shader-effect.c:482 msgid "Shader Type" msgstr "" -#: clutter/clutter-shader-effect.c:416 +#: ../clutter/clutter-shader-effect.c:483 msgid "The type of shader used" msgstr "" -#: clutter/clutter-snap-constraint.c:322 +#: ../clutter/clutter-snap-constraint.c:322 msgid "The source of the constraint" msgstr "" -#: clutter/clutter-snap-constraint.c:335 +#: ../clutter/clutter-snap-constraint.c:335 msgid "From Edge" msgstr "" -#: clutter/clutter-snap-constraint.c:336 +#: ../clutter/clutter-snap-constraint.c:336 msgid "The edge of the actor that should be snapped" msgstr "" -#: clutter/clutter-snap-constraint.c:350 +#: ../clutter/clutter-snap-constraint.c:350 msgid "To Edge" msgstr "" -#: clutter/clutter-snap-constraint.c:351 +#: ../clutter/clutter-snap-constraint.c:351 msgid "The edge of the source that should be snapped" msgstr "" -#: clutter/clutter-snap-constraint.c:367 +#: ../clutter/clutter-snap-constraint.c:367 msgid "The offset in pixels to apply to the constraint" msgstr "" -#: clutter/clutter-stage.c:1707 +#: ../clutter/clutter-stage.c:1732 msgid "Fullscreen Set" msgstr "" -#: clutter/clutter-stage.c:1708 +#: ../clutter/clutter-stage.c:1733 msgid "Whether the main stage is fullscreen" msgstr "" -#: clutter/clutter-stage.c:1724 +#: ../clutter/clutter-stage.c:1749 msgid "Offscreen" msgstr "" -#: clutter/clutter-stage.c:1725 +#: ../clutter/clutter-stage.c:1750 msgid "Whether the main stage should be rendered offscreen" msgstr "" -#: clutter/clutter-stage.c:1737 clutter/clutter-text.c:3052 +#: ../clutter/clutter-stage.c:1762 ../clutter/clutter-text.c:3108 msgid "Cursor Visible" msgstr "" -#: clutter/clutter-stage.c:1738 +#: ../clutter/clutter-stage.c:1763 msgid "Whether the mouse pointer is visible on the main stage" msgstr "" -#: clutter/clutter-stage.c:1752 +#: ../clutter/clutter-stage.c:1777 msgid "User Resizable" msgstr "" -#: clutter/clutter-stage.c:1753 +#: ../clutter/clutter-stage.c:1778 msgid "Whether the stage is able to be resized via user interaction" msgstr "" -#: clutter/clutter-stage.c:1766 +#: ../clutter/clutter-stage.c:1791 msgid "The color of the stage" msgstr "" -#: clutter/clutter-stage.c:1780 +#: ../clutter/clutter-stage.c:1805 msgid "Perspective" msgstr "" -#: clutter/clutter-stage.c:1781 +#: ../clutter/clutter-stage.c:1806 msgid "Perspective projection parameters" msgstr "" -#: clutter/clutter-stage.c:1796 +#: ../clutter/clutter-stage.c:1821 msgid "Title" msgstr "" -#: clutter/clutter-stage.c:1797 +#: ../clutter/clutter-stage.c:1822 msgid "Stage Title" msgstr "" -#: clutter/clutter-stage.c:1812 +#: ../clutter/clutter-stage.c:1837 msgid "Use Fog" msgstr "" -#: clutter/clutter-stage.c:1813 +#: ../clutter/clutter-stage.c:1838 msgid "Whether to enable depth cueing" msgstr "" -#: clutter/clutter-stage.c:1827 +#: ../clutter/clutter-stage.c:1852 msgid "Fog" msgstr "" -#: clutter/clutter-stage.c:1828 +#: ../clutter/clutter-stage.c:1853 msgid "Settings for the depth cueing" msgstr "" -#: clutter/clutter-stage.c:1844 +#: ../clutter/clutter-stage.c:1869 msgid "Use Alpha" msgstr "" -#: clutter/clutter-stage.c:1845 +#: ../clutter/clutter-stage.c:1870 msgid "Whether to honour the alpha component of the stage color" msgstr "" -#: clutter/clutter-stage.c:1861 +#: ../clutter/clutter-stage.c:1886 msgid "Key Focus" msgstr "" -#: clutter/clutter-stage.c:1862 +#: ../clutter/clutter-stage.c:1887 msgid "The currently key focused actor" msgstr "" -#: clutter/clutter-stage.c:1878 +#: ../clutter/clutter-stage.c:1903 msgid "No Clear Hint" msgstr "" -#: clutter/clutter-stage.c:1879 +#: ../clutter/clutter-stage.c:1904 msgid "Whether the stage should clear its contents" msgstr "" -#: clutter/clutter-stage.c:1892 +#: ../clutter/clutter-stage.c:1917 msgid "Accept Focus" msgstr "" -#: clutter/clutter-stage.c:1893 +#: ../clutter/clutter-stage.c:1918 msgid "Whether the stage should accept focus on show" msgstr "" -#: clutter/clutter-state.c:1472 +#: ../clutter/clutter-state.c:1472 msgid "State" msgstr "" -#: clutter/clutter-state.c:1473 +#: ../clutter/clutter-state.c:1473 msgid "Currently set state, (transition to this state might not be complete)" msgstr "" -#: clutter/clutter-state.c:1487 +#: ../clutter/clutter-state.c:1487 msgid "Default transition duration" msgstr "" -#: clutter/clutter-table-layout.c:585 +#: ../clutter/clutter-table-layout.c:585 msgid "Column Number" msgstr "" -#: clutter/clutter-table-layout.c:586 +#: ../clutter/clutter-table-layout.c:586 msgid "The column the widget resides in" msgstr "" -#: clutter/clutter-table-layout.c:593 +#: ../clutter/clutter-table-layout.c:593 msgid "Row Number" msgstr "" -#: clutter/clutter-table-layout.c:594 +#: ../clutter/clutter-table-layout.c:594 msgid "The row the widget resides in" msgstr "" -#: clutter/clutter-table-layout.c:601 +#: ../clutter/clutter-table-layout.c:601 msgid "Column Span" msgstr "" -#: clutter/clutter-table-layout.c:602 +#: ../clutter/clutter-table-layout.c:602 msgid "The number of columns the widget should span" msgstr "" -#: clutter/clutter-table-layout.c:609 +#: ../clutter/clutter-table-layout.c:609 msgid "Row Span" msgstr "" -#: clutter/clutter-table-layout.c:610 +#: ../clutter/clutter-table-layout.c:610 msgid "The number of rows the widget should span" msgstr "" -#: clutter/clutter-table-layout.c:617 +#: ../clutter/clutter-table-layout.c:617 msgid "Horizontal Expand" msgstr "" -#: clutter/clutter-table-layout.c:618 +#: ../clutter/clutter-table-layout.c:618 msgid "Allocate extra space for the child in horizontal axis" msgstr "" -#: clutter/clutter-table-layout.c:624 +#: ../clutter/clutter-table-layout.c:624 msgid "Vertical Expand" msgstr "" -#: clutter/clutter-table-layout.c:625 +#: ../clutter/clutter-table-layout.c:625 msgid "Allocate extra space for the child in vertical axis" msgstr "" -#: clutter/clutter-table-layout.c:1714 +#: ../clutter/clutter-table-layout.c:1714 msgid "Spacing between columns" msgstr "" -#: clutter/clutter-table-layout.c:1728 +#: ../clutter/clutter-table-layout.c:1728 msgid "Spacing between rows" msgstr "" -#: clutter/clutter-text.c:2940 +#: ../clutter/clutter-text.c:2996 msgid "The font to be used by the text" msgstr "" -#: clutter/clutter-text.c:2957 +#: ../clutter/clutter-text.c:3013 msgid "Font Description" msgstr "" -#: clutter/clutter-text.c:2958 +#: ../clutter/clutter-text.c:3014 msgid "The font description to be used" msgstr "" -#: clutter/clutter-text.c:2974 +#: ../clutter/clutter-text.c:3030 msgid "Text" msgstr "" -#: clutter/clutter-text.c:2975 +#: ../clutter/clutter-text.c:3031 msgid "The text to render" msgstr "" -#: clutter/clutter-text.c:2989 +#: ../clutter/clutter-text.c:3045 msgid "Font Color" msgstr "" -#: clutter/clutter-text.c:2990 +#: ../clutter/clutter-text.c:3046 msgid "Color of the font used by the text" msgstr "" -#: clutter/clutter-text.c:3004 +#: ../clutter/clutter-text.c:3060 msgid "Editable" msgstr "" -#: clutter/clutter-text.c:3005 +#: ../clutter/clutter-text.c:3061 msgid "Whether the text is editable" msgstr "" -#: clutter/clutter-text.c:3020 +#: ../clutter/clutter-text.c:3076 msgid "Selectable" msgstr "" -#: clutter/clutter-text.c:3021 +#: ../clutter/clutter-text.c:3077 msgid "Whether the text is selectable" msgstr "" -#: clutter/clutter-text.c:3035 +#: ../clutter/clutter-text.c:3091 msgid "Activatable" msgstr "" -#: clutter/clutter-text.c:3036 +#: ../clutter/clutter-text.c:3092 msgid "Whether pressing return causes the activate signal to be emitted" msgstr "" -#: clutter/clutter-text.c:3053 +#: ../clutter/clutter-text.c:3109 msgid "Whether the input cursor is visible" msgstr "" -#: clutter/clutter-text.c:3067 clutter/clutter-text.c:3068 +#: ../clutter/clutter-text.c:3123 ../clutter/clutter-text.c:3124 msgid "Cursor Color" msgstr "" -#: clutter/clutter-text.c:3082 +#: ../clutter/clutter-text.c:3138 msgid "Cursor Color Set" msgstr "" -#: clutter/clutter-text.c:3083 +#: ../clutter/clutter-text.c:3139 msgid "Whether the cursor color has been set" msgstr "" -#: clutter/clutter-text.c:3098 +#: ../clutter/clutter-text.c:3154 msgid "Cursor Size" msgstr "" -#: clutter/clutter-text.c:3099 +#: ../clutter/clutter-text.c:3155 msgid "The width of the cursor, in pixels" msgstr "" -#: clutter/clutter-text.c:3113 +#: ../clutter/clutter-text.c:3169 msgid "Cursor Position" msgstr "" -#: clutter/clutter-text.c:3114 +#: ../clutter/clutter-text.c:3170 msgid "The cursor position" msgstr "" -#: clutter/clutter-text.c:3129 +#: ../clutter/clutter-text.c:3185 msgid "Selection-bound" msgstr "" -#: clutter/clutter-text.c:3130 +#: ../clutter/clutter-text.c:3186 msgid "The cursor position of the other end of the selection" msgstr "" -#: clutter/clutter-text.c:3145 clutter/clutter-text.c:3146 +#: ../clutter/clutter-text.c:3201 ../clutter/clutter-text.c:3202 msgid "Selection Color" msgstr "" -#: clutter/clutter-text.c:3160 +#: ../clutter/clutter-text.c:3216 msgid "Selection Color Set" msgstr "" -#: clutter/clutter-text.c:3161 +#: ../clutter/clutter-text.c:3217 msgid "Whether the selection color has been set" msgstr "" -#: clutter/clutter-text.c:3176 +#: ../clutter/clutter-text.c:3232 msgid "Attributes" msgstr "" -#: clutter/clutter-text.c:3177 +#: ../clutter/clutter-text.c:3233 msgid "A list of style attributes to apply to the contents of the actor" msgstr "" -#: clutter/clutter-text.c:3199 +#: ../clutter/clutter-text.c:3255 msgid "Use markup" msgstr "" -#: clutter/clutter-text.c:3200 +#: ../clutter/clutter-text.c:3256 msgid "Whether or not the text includes Pango markup" msgstr "" -#: clutter/clutter-text.c:3216 +#: ../clutter/clutter-text.c:3272 msgid "Line wrap" msgstr "" -#: clutter/clutter-text.c:3217 +#: ../clutter/clutter-text.c:3273 msgid "If set, wrap the lines if the text becomes too wide" msgstr "" -#: clutter/clutter-text.c:3232 +#: ../clutter/clutter-text.c:3288 msgid "Line wrap mode" msgstr "" -#: clutter/clutter-text.c:3233 +#: ../clutter/clutter-text.c:3289 msgid "Control how line-wrapping is done" msgstr "" -#: clutter/clutter-text.c:3248 +#: ../clutter/clutter-text.c:3304 msgid "Ellipsize" msgstr "" -#: clutter/clutter-text.c:3249 +#: ../clutter/clutter-text.c:3305 msgid "The preferred place to ellipsize the string" msgstr "" -#: clutter/clutter-text.c:3265 +#: ../clutter/clutter-text.c:3321 msgid "Line Alignment" msgstr "" -#: clutter/clutter-text.c:3266 +#: ../clutter/clutter-text.c:3322 msgid "The preferred alignment for the string, for multi-line text" msgstr "" -#: clutter/clutter-text.c:3282 +#: ../clutter/clutter-text.c:3338 msgid "Justify" msgstr "" -#: clutter/clutter-text.c:3283 +#: ../clutter/clutter-text.c:3339 msgid "Whether the text should be justified" msgstr "" -#: clutter/clutter-text.c:3298 +#: ../clutter/clutter-text.c:3354 msgid "Password Character" msgstr "" -#: clutter/clutter-text.c:3299 +#: ../clutter/clutter-text.c:3355 msgid "If non-zero, use this character to display the actor's contents" msgstr "" -#: clutter/clutter-text.c:3313 +#: ../clutter/clutter-text.c:3369 msgid "Max Length" msgstr "" -#: clutter/clutter-text.c:3314 +#: ../clutter/clutter-text.c:3370 msgid "Maximum length of the text inside the actor" msgstr "" -#: clutter/clutter-text.c:3337 +#: ../clutter/clutter-text.c:3393 msgid "Single Line Mode" msgstr "" -#: clutter/clutter-text.c:3338 +#: ../clutter/clutter-text.c:3394 msgid "Whether the text should be a single line" msgstr "" -#: clutter/clutter-text.c:3352 clutter/clutter-text.c:3353 +#: ../clutter/clutter-text.c:3408 ../clutter/clutter-text.c:3409 msgid "Selected Text Color" msgstr "" -#: clutter/clutter-text.c:3367 +#: ../clutter/clutter-text.c:3423 msgid "Selected Text Color Set" msgstr "" -#: clutter/clutter-text.c:3368 +#: ../clutter/clutter-text.c:3424 msgid "Whether the selected text color has been set" msgstr "" -#: clutter/clutter-texture.c:995 +#: ../clutter/clutter-texture.c:985 msgid "Sync size of actor" msgstr "" -#: clutter/clutter-texture.c:996 +#: ../clutter/clutter-texture.c:986 msgid "Auto sync size of actor to underlying pixbuf dimensions" msgstr "" -#: clutter/clutter-texture.c:1003 +#: ../clutter/clutter-texture.c:993 msgid "Disable Slicing" msgstr "" -#: clutter/clutter-texture.c:1004 +#: ../clutter/clutter-texture.c:994 msgid "" "Forces the underlying texture to be singular and not made of smaller space " "saving individual textures" msgstr "" -#: clutter/clutter-texture.c:1013 +#: ../clutter/clutter-texture.c:1003 msgid "Tile Waste" msgstr "" -#: clutter/clutter-texture.c:1014 +#: ../clutter/clutter-texture.c:1004 msgid "Maximum waste area of a sliced texture" msgstr "" -#: clutter/clutter-texture.c:1022 +#: ../clutter/clutter-texture.c:1012 msgid "Horizontal repeat" msgstr "" -#: clutter/clutter-texture.c:1023 +#: ../clutter/clutter-texture.c:1013 msgid "Repeat the contents rather than scaling them horizontally" msgstr "" -#: clutter/clutter-texture.c:1030 +#: ../clutter/clutter-texture.c:1020 msgid "Vertical repeat" msgstr "" -#: clutter/clutter-texture.c:1031 +#: ../clutter/clutter-texture.c:1021 msgid "Repeat the contents rather than scaling them vertically" msgstr "" -#: clutter/clutter-texture.c:1038 +#: ../clutter/clutter-texture.c:1028 msgid "Filter Quality" msgstr "" -#: clutter/clutter-texture.c:1039 +#: ../clutter/clutter-texture.c:1029 msgid "Rendering quality used when drawing the texture" msgstr "" -#: clutter/clutter-texture.c:1047 +#: ../clutter/clutter-texture.c:1037 msgid "Pixel Format" msgstr "" -#: clutter/clutter-texture.c:1048 +#: ../clutter/clutter-texture.c:1038 msgid "The Cogl pixel format to use" msgstr "" -#: clutter/clutter-texture.c:1056 +#: ../clutter/clutter-texture.c:1046 msgid "Cogl Texture" msgstr "" -#: clutter/clutter-texture.c:1057 +#: ../clutter/clutter-texture.c:1047 msgid "The underlying Cogl texture handle used to draw this actor" msgstr "" -#: clutter/clutter-texture.c:1064 +#: ../clutter/clutter-texture.c:1054 msgid "Cogl Material" msgstr "" -#: clutter/clutter-texture.c:1065 +#: ../clutter/clutter-texture.c:1055 msgid "The underlying Cogl material handle used to draw this actor" msgstr "" -#: clutter/clutter-texture.c:1082 +#: ../clutter/clutter-texture.c:1072 msgid "The path of the file containing the image data" msgstr "" -#: clutter/clutter-texture.c:1089 +#: ../clutter/clutter-texture.c:1079 msgid "Keep Aspect Ratio" msgstr "" -#: clutter/clutter-texture.c:1090 +#: ../clutter/clutter-texture.c:1080 msgid "" "Keep the aspect ratio of the texture when requesting the preferred width or " "height" msgstr "" -#: clutter/clutter-texture.c:1116 +#: ../clutter/clutter-texture.c:1106 msgid "Load asynchronously" msgstr "" -#: clutter/clutter-texture.c:1117 +#: ../clutter/clutter-texture.c:1107 msgid "" "Load files inside a thread to avoid blocking when loading images from disk" msgstr "" -#: clutter/clutter-texture.c:1133 +#: ../clutter/clutter-texture.c:1123 msgid "Load data asynchronously" msgstr "" -#: clutter/clutter-texture.c:1134 +#: ../clutter/clutter-texture.c:1124 msgid "" "Decode image data files inside a thread to reduce blocking when loading " "images from disk" msgstr "" -#: clutter/clutter-texture.c:1158 +#: ../clutter/clutter-texture.c:1148 msgid "Pick With Alpha" msgstr "" -#: clutter/clutter-texture.c:1159 +#: ../clutter/clutter-texture.c:1149 msgid "Shape actor with alpha channel when picking" msgstr "" -#: clutter/clutter-texture.c:1557 clutter/clutter-texture.c:1967 -#: clutter/clutter-texture.c:2062 clutter/clutter-texture.c:2343 +#: ../clutter/clutter-texture.c:1547 ../clutter/clutter-texture.c:1930 +#: ../clutter/clutter-texture.c:2024 ../clutter/clutter-texture.c:2305 +#, c-format msgid "Failed to load the image data" msgstr "" -#: clutter/clutter-texture.c:1703 +#: ../clutter/clutter-texture.c:1693 +#, c-format msgid "YUV textures are not supported" msgstr "" -#: clutter/clutter-texture.c:1712 +#: ../clutter/clutter-texture.c:1702 +#, c-format msgid "YUV2 textues are not supported" msgstr "" -#: clutter/clutter-timeline.c:264 +#: ../clutter/clutter-timeline.c:264 msgid "Should the timeline automatically restart" msgstr "" -#: clutter/clutter-timeline.c:278 +#: ../clutter/clutter-timeline.c:278 msgid "Delay" msgstr "" -#: clutter/clutter-timeline.c:279 +#: ../clutter/clutter-timeline.c:279 msgid "Delay before start" msgstr "" -#: clutter/clutter-timeline.c:295 +#: ../clutter/clutter-timeline.c:295 msgid "Duration of the timeline in milliseconds" msgstr "" -#: clutter/clutter-timeline.c:311 +#: ../clutter/clutter-timeline.c:310 +#: ../clutter/deprecated/clutter-behaviour-ellipse.c:526 +#: ../clutter/deprecated/clutter-behaviour-rotate.c:335 +msgid "Direction" +msgstr "" + +#: ../clutter/clutter-timeline.c:311 msgid "Direction of the timeline" msgstr "" -#: clutter/clutter-timeline.c:326 +#: ../clutter/clutter-timeline.c:326 msgid "Auto Reverse" msgstr "" -#: clutter/clutter-timeline.c:327 +#: ../clutter/clutter-timeline.c:327 msgid "Whether the direction should be reversed when reaching the end" msgstr "" -#: clutter/evdev/clutter-input-device-evdev.c:147 +#: ../clutter/deprecated/clutter-behaviour.c:241 +msgid "Alpha Object to drive the behaviour" +msgstr "" + +#: ../clutter/deprecated/clutter-behaviour-depth.c:180 +msgid "Start Depth" +msgstr "" + +#: ../clutter/deprecated/clutter-behaviour-depth.c:181 +msgid "Initial depth to apply" +msgstr "" + +#: ../clutter/deprecated/clutter-behaviour-depth.c:196 +msgid "End Depth" +msgstr "" + +#: ../clutter/deprecated/clutter-behaviour-depth.c:197 +msgid "Final depth to apply" +msgstr "" + +#: ../clutter/deprecated/clutter-behaviour-ellipse.c:399 +msgid "Start Angle" +msgstr "" + +#: ../clutter/deprecated/clutter-behaviour-ellipse.c:400 +#: ../clutter/deprecated/clutter-behaviour-rotate.c:282 +msgid "Initial angle" +msgstr "" + +#: ../clutter/deprecated/clutter-behaviour-ellipse.c:415 +msgid "End Angle" +msgstr "" + +#: ../clutter/deprecated/clutter-behaviour-ellipse.c:416 +#: ../clutter/deprecated/clutter-behaviour-rotate.c:300 +msgid "Final angle" +msgstr "" + +#: ../clutter/deprecated/clutter-behaviour-ellipse.c:431 +msgid "Angle x tilt" +msgstr "" + +#: ../clutter/deprecated/clutter-behaviour-ellipse.c:432 +msgid "Tilt of the ellipse around x axis" +msgstr "" + +#: ../clutter/deprecated/clutter-behaviour-ellipse.c:447 +msgid "Angle y tilt" +msgstr "" + +#: ../clutter/deprecated/clutter-behaviour-ellipse.c:448 +msgid "Tilt of the ellipse around y axis" +msgstr "" + +#: ../clutter/deprecated/clutter-behaviour-ellipse.c:463 +msgid "Angle z tilt" +msgstr "" + +#: ../clutter/deprecated/clutter-behaviour-ellipse.c:464 +msgid "Tilt of the ellipse around z axis" +msgstr "" + +#: ../clutter/deprecated/clutter-behaviour-ellipse.c:480 +msgid "Width of the ellipse" +msgstr "" + +#: ../clutter/deprecated/clutter-behaviour-ellipse.c:496 +msgid "Height of ellipse" +msgstr "" + +#: ../clutter/deprecated/clutter-behaviour-ellipse.c:511 +msgid "Center" +msgstr "" + +#: ../clutter/deprecated/clutter-behaviour-ellipse.c:512 +msgid "Center of ellipse" +msgstr "" + +#: ../clutter/deprecated/clutter-behaviour-ellipse.c:527 +#: ../clutter/deprecated/clutter-behaviour-rotate.c:336 +msgid "Direction of rotation" +msgstr "" + +#: ../clutter/deprecated/clutter-behaviour-opacity.c:183 +msgid "Opacity Start" +msgstr "" + +#: ../clutter/deprecated/clutter-behaviour-opacity.c:184 +msgid "Initial opacity level" +msgstr "" + +#: ../clutter/deprecated/clutter-behaviour-opacity.c:201 +msgid "Opacity End" +msgstr "" + +#: ../clutter/deprecated/clutter-behaviour-opacity.c:202 +msgid "Final opacity level" +msgstr "" + +#: ../clutter/deprecated/clutter-behaviour-path.c:225 +msgid "The ClutterPath object representing the path to animate along" +msgstr "" + +#: ../clutter/deprecated/clutter-behaviour-rotate.c:281 +msgid "Angle Begin" +msgstr "" + +#: ../clutter/deprecated/clutter-behaviour-rotate.c:299 +msgid "Angle End" +msgstr "" + +#: ../clutter/deprecated/clutter-behaviour-rotate.c:317 +msgid "Axis" +msgstr "" + +#: ../clutter/deprecated/clutter-behaviour-rotate.c:318 +msgid "Axis of rotation" +msgstr "" + +#: ../clutter/deprecated/clutter-behaviour-rotate.c:353 +msgid "Center X" +msgstr "" + +#: ../clutter/deprecated/clutter-behaviour-rotate.c:354 +msgid "X coordinate of the center of rotation" +msgstr "" + +#: ../clutter/deprecated/clutter-behaviour-rotate.c:371 +msgid "Center Y" +msgstr "" + +#: ../clutter/deprecated/clutter-behaviour-rotate.c:372 +msgid "Y coordinate of the center of rotation" +msgstr "" + +#: ../clutter/deprecated/clutter-behaviour-rotate.c:389 +msgid "Center Z" +msgstr "" + +#: ../clutter/deprecated/clutter-behaviour-rotate.c:390 +msgid "Z coordinate of the center of rotation" +msgstr "" + +#: ../clutter/deprecated/clutter-behaviour-scale.c:224 +msgid "X Start Scale" +msgstr "" + +#: ../clutter/deprecated/clutter-behaviour-scale.c:225 +msgid "Initial scale on the X axis" +msgstr "" + +#: ../clutter/deprecated/clutter-behaviour-scale.c:243 +msgid "X End Scale" +msgstr "" + +#: ../clutter/deprecated/clutter-behaviour-scale.c:244 +msgid "Final scale on the X axis" +msgstr "" + +#: ../clutter/deprecated/clutter-behaviour-scale.c:262 +msgid "Y Start Scale" +msgstr "" + +#: ../clutter/deprecated/clutter-behaviour-scale.c:263 +msgid "Initial scale on the Y axis" +msgstr "" + +#: ../clutter/deprecated/clutter-behaviour-scale.c:281 +msgid "Y End Scale" +msgstr "" + +#: ../clutter/deprecated/clutter-behaviour-scale.c:282 +msgid "Final scale on the Y axis" +msgstr "" + +#: ../clutter/deprecated/clutter-shader.c:257 +msgid "Vertex Source" +msgstr "" + +#: ../clutter/deprecated/clutter-shader.c:258 +msgid "Source of vertex shader" +msgstr "" + +#: ../clutter/deprecated/clutter-shader.c:274 +msgid "Fragment Source" +msgstr "" + +#: ../clutter/deprecated/clutter-shader.c:275 +msgid "Source of fragment shader" +msgstr "" + +#: ../clutter/deprecated/clutter-shader.c:292 +msgid "Compiled" +msgstr "" + +#: ../clutter/deprecated/clutter-shader.c:293 +msgid "Whether the shader is compiled and linked" +msgstr "" + +#: ../clutter/deprecated/clutter-shader.c:310 +msgid "Whether the shader is enabled" +msgstr "" + +#: ../clutter/deprecated/clutter-shader.c:521 +#, c-format +msgid "%s compilation failed: %s" +msgstr "" + +#: ../clutter/deprecated/clutter-shader.c:522 +msgid "Vertex shader" +msgstr "" + +#: ../clutter/deprecated/clutter-shader.c:523 +msgid "Fragment shader" +msgstr "" + +#: ../clutter/evdev/clutter-input-device-evdev.c:147 msgid "sysfs Path" msgstr "" -#: clutter/evdev/clutter-input-device-evdev.c:148 +#: ../clutter/evdev/clutter-input-device-evdev.c:148 msgid "Path of the device in sysfs" msgstr "" -#: clutter/evdev/clutter-input-device-evdev.c:163 +#: ../clutter/evdev/clutter-input-device-evdev.c:163 msgid "Device Path" msgstr "" -#: clutter/evdev/clutter-input-device-evdev.c:164 +#: ../clutter/evdev/clutter-input-device-evdev.c:164 msgid "Path of the device node" msgstr "" -#: clutter/x11/clutter-backend-x11.c:483 +#: ../clutter/gdk/clutter-backend-gdk.c:287 +#, c-format +msgid "Could not find a suitable CoglWinsys for a GdkDisplay of type %s" +msgstr "" + +#: ../clutter/x11/clutter-backend-x11.c:506 msgid "X display to use" msgstr "" -#: clutter/x11/clutter-backend-x11.c:489 +#: ../clutter/x11/clutter-backend-x11.c:512 msgid "X screen to use" msgstr "" -#: clutter/x11/clutter-backend-x11.c:494 +#: ../clutter/x11/clutter-backend-x11.c:517 msgid "Make X calls synchronous" msgstr "" -#: clutter/x11/clutter-backend-x11.c:501 +#: ../clutter/x11/clutter-backend-x11.c:524 msgid "Enable XInput support" msgstr "" -#: clutter/x11/clutter-keymap-x11.c:317 +#: ../clutter/x11/clutter-keymap-x11.c:317 msgid "The Clutter backend" msgstr "" -#: clutter/x11/clutter-x11-texture-pixmap.c:545 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:544 msgid "Pixmap" msgstr "" -#: clutter/x11/clutter-x11-texture-pixmap.c:546 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:545 msgid "The X11 Pixmap to be bound" msgstr "" -#: clutter/x11/clutter-x11-texture-pixmap.c:554 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:553 msgid "Pixmap width" msgstr "" -#: clutter/x11/clutter-x11-texture-pixmap.c:555 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:554 msgid "The width of the pixmap bound to this texture" msgstr "" -#: clutter/x11/clutter-x11-texture-pixmap.c:563 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:562 msgid "Pixmap height" msgstr "" -#: clutter/x11/clutter-x11-texture-pixmap.c:564 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:563 msgid "The height of the pixmap bound to this texture" msgstr "" -#: clutter/x11/clutter-x11-texture-pixmap.c:572 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:571 msgid "Pixmap Depth" msgstr "" -#: clutter/x11/clutter-x11-texture-pixmap.c:573 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:572 msgid "The depth (in number of bits) of the pixmap bound to this texture" msgstr "" -#: clutter/x11/clutter-x11-texture-pixmap.c:581 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:580 msgid "Automatic Updates" msgstr "" -#: clutter/x11/clutter-x11-texture-pixmap.c:582 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:581 msgid "If the texture should be kept in sync with any pixmap changes." msgstr "" -#: clutter/x11/clutter-x11-texture-pixmap.c:590 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:589 msgid "Window" msgstr "" -#: clutter/x11/clutter-x11-texture-pixmap.c:591 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:590 msgid "The X11 Window to be bound" msgstr "" -#: clutter/x11/clutter-x11-texture-pixmap.c:599 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:598 msgid "Window Redirect Automatic" msgstr "" -#: clutter/x11/clutter-x11-texture-pixmap.c:600 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:599 msgid "If composite window redirects are set to Automatic (or Manual if false)" msgstr "" -#: clutter/x11/clutter-x11-texture-pixmap.c:610 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:609 msgid "Window Mapped" msgstr "" -#: clutter/x11/clutter-x11-texture-pixmap.c:611 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:610 msgid "If window is mapped" msgstr "" -#: clutter/x11/clutter-x11-texture-pixmap.c:620 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:619 msgid "Destroyed" msgstr "" -#: clutter/x11/clutter-x11-texture-pixmap.c:621 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:620 msgid "If window has been destroyed" msgstr "" -#: clutter/x11/clutter-x11-texture-pixmap.c:629 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:628 msgid "Window X" msgstr "" -#: clutter/x11/clutter-x11-texture-pixmap.c:630 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:629 msgid "X position of window on screen according to X11" msgstr "" -#: clutter/x11/clutter-x11-texture-pixmap.c:638 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:637 msgid "Window Y" msgstr "" -#: clutter/x11/clutter-x11-texture-pixmap.c:639 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:638 msgid "Y position of window on screen according to X11" msgstr "" -#: clutter/x11/clutter-x11-texture-pixmap.c:646 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:645 msgid "Window Override Redirect" msgstr "" -#: clutter/x11/clutter-x11-texture-pixmap.c:647 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:646 msgid "If this is an override-redirect window" msgstr "" diff --git a/po/gl.po b/po/gl.po index a543d0077..36591ef60 100644 --- a/po/gl.po +++ b/po/gl.po @@ -9,8 +9,8 @@ msgstr "" "Project-Id-Version: clutter\n" "Report-Msgid-Bugs-To: http://bugzilla.clutter-project.org/enter_bug.cgi?" "product=clutter\n" -"POT-Creation-Date: 2011-10-15 15:21+0200\n" -"PO-Revision-Date: 2011-10-15 15:23+0200\n" +"POT-Creation-Date: 2011-11-13 18:51+0100\n" +"PO-Revision-Date: 2011-11-13 18:51+0100\n" "Last-Translator: Fran Dieguez \n" "Language-Team: Galician \n" "Language: gl\n" @@ -21,398 +21,398 @@ msgstr "" "X-Generator: Lokalize 1.2\n" "Plural-Forms: nplurals=2; plural=(n!=1);\n" -#: ../clutter/clutter-actor.c:3877 +#: ../clutter/clutter-actor.c:3886 msgid "X coordinate" msgstr "Coordenada X" -#: ../clutter/clutter-actor.c:3878 +#: ../clutter/clutter-actor.c:3887 msgid "X coordinate of the actor" msgstr "Coordenada X do actor" -#: ../clutter/clutter-actor.c:3893 +#: ../clutter/clutter-actor.c:3902 msgid "Y coordinate" msgstr "Coordenada Y" -#: ../clutter/clutter-actor.c:3894 +#: ../clutter/clutter-actor.c:3903 msgid "Y coordinate of the actor" msgstr "Coordenada Y do actor" -#: ../clutter/clutter-actor.c:3909 +#: ../clutter/clutter-actor.c:3918 #: ../clutter/deprecated/clutter-behaviour-ellipse.c:479 msgid "Width" msgstr "Largura" -#: ../clutter/clutter-actor.c:3910 +#: ../clutter/clutter-actor.c:3919 msgid "Width of the actor" msgstr "Largura do actor" -#: ../clutter/clutter-actor.c:3924 +#: ../clutter/clutter-actor.c:3933 #: ../clutter/deprecated/clutter-behaviour-ellipse.c:495 msgid "Height" msgstr "Altura" -#: ../clutter/clutter-actor.c:3925 +#: ../clutter/clutter-actor.c:3934 msgid "Height of the actor" msgstr "Altura do actor" -#: ../clutter/clutter-actor.c:3943 +#: ../clutter/clutter-actor.c:3952 msgid "Fixed X" msgstr "X fixa" -#: ../clutter/clutter-actor.c:3944 +#: ../clutter/clutter-actor.c:3953 msgid "Forced X position of the actor" msgstr "Posición X forzada do actor" -#: ../clutter/clutter-actor.c:3962 +#: ../clutter/clutter-actor.c:3971 msgid "Fixed Y" msgstr "Y fixa" -#: ../clutter/clutter-actor.c:3963 +#: ../clutter/clutter-actor.c:3972 msgid "Forced Y position of the actor" msgstr "Posición Y forzada do actor" -#: ../clutter/clutter-actor.c:3979 +#: ../clutter/clutter-actor.c:3988 msgid "Fixed position set" msgstr "Estabelecer a posición fixa" -#: ../clutter/clutter-actor.c:3980 +#: ../clutter/clutter-actor.c:3989 msgid "Whether to use fixed positioning for the actor" msgstr "Cando se emprega o posicionamento fixo do actor" -#: ../clutter/clutter-actor.c:4002 +#: ../clutter/clutter-actor.c:4011 msgid "Min Width" msgstr "Largura mínima" -#: ../clutter/clutter-actor.c:4003 +#: ../clutter/clutter-actor.c:4012 msgid "Forced minimum width request for the actor" msgstr "Forzar a largura mínima requirida para o actor" -#: ../clutter/clutter-actor.c:4022 +#: ../clutter/clutter-actor.c:4031 msgid "Min Height" msgstr "Altura mínima" -#: ../clutter/clutter-actor.c:4023 +#: ../clutter/clutter-actor.c:4032 msgid "Forced minimum height request for the actor" msgstr "Forzar a altura mínima requirida para o actor" -#: ../clutter/clutter-actor.c:4042 +#: ../clutter/clutter-actor.c:4051 msgid "Natural Width" msgstr "Largura natural" -#: ../clutter/clutter-actor.c:4043 +#: ../clutter/clutter-actor.c:4052 msgid "Forced natural width request for the actor" msgstr "Forzar a largura natural requirida para o actor" -#: ../clutter/clutter-actor.c:4062 +#: ../clutter/clutter-actor.c:4071 msgid "Natural Height" msgstr "Altura natural" -#: ../clutter/clutter-actor.c:4063 +#: ../clutter/clutter-actor.c:4072 msgid "Forced natural height request for the actor" msgstr "Forzar a altura natural requirida para o actor" -#: ../clutter/clutter-actor.c:4079 +#: ../clutter/clutter-actor.c:4088 msgid "Minimum width set" msgstr "Estabelecer a largura mínima" -#: ../clutter/clutter-actor.c:4080 +#: ../clutter/clutter-actor.c:4089 msgid "Whether to use the min-width property" msgstr "Cando se emprega a propiedade de largura mínima" -#: ../clutter/clutter-actor.c:4095 +#: ../clutter/clutter-actor.c:4104 msgid "Minimum height set" msgstr "Estabelecer a altura mínima" -#: ../clutter/clutter-actor.c:4096 +#: ../clutter/clutter-actor.c:4105 msgid "Whether to use the min-height property" msgstr "Cando se emprega a propiedade de altura mínima" -#: ../clutter/clutter-actor.c:4111 +#: ../clutter/clutter-actor.c:4120 msgid "Natural width set" msgstr "Estabelecer a largura natural" -#: ../clutter/clutter-actor.c:4112 +#: ../clutter/clutter-actor.c:4121 msgid "Whether to use the natural-width property" msgstr "Cando se emprega a propiedade de largura natural" -#: ../clutter/clutter-actor.c:4129 +#: ../clutter/clutter-actor.c:4138 msgid "Natural height set" msgstr "Estabelecer a altura natural" -#: ../clutter/clutter-actor.c:4130 +#: ../clutter/clutter-actor.c:4139 msgid "Whether to use the natural-height property" msgstr "Cando se emprega a propiedade de altura natural" -#: ../clutter/clutter-actor.c:4149 +#: ../clutter/clutter-actor.c:4158 msgid "Allocation" msgstr "Asignación" -#: ../clutter/clutter-actor.c:4150 +#: ../clutter/clutter-actor.c:4159 msgid "The actor's allocation" msgstr "Asignación do actor" -#: ../clutter/clutter-actor.c:4206 +#: ../clutter/clutter-actor.c:4215 msgid "Request Mode" msgstr "Modo requirido" -#: ../clutter/clutter-actor.c:4207 +#: ../clutter/clutter-actor.c:4216 msgid "The actor's request mode" msgstr "Modo de requirimento do actor" -#: ../clutter/clutter-actor.c:4222 +#: ../clutter/clutter-actor.c:4231 msgid "Depth" msgstr "Profundidade" -#: ../clutter/clutter-actor.c:4223 +#: ../clutter/clutter-actor.c:4232 msgid "Position on the Z axis" msgstr "Posición no eixo Z" -#: ../clutter/clutter-actor.c:4237 +#: ../clutter/clutter-actor.c:4246 msgid "Opacity" msgstr "Opacidade" -#: ../clutter/clutter-actor.c:4238 +#: ../clutter/clutter-actor.c:4247 msgid "Opacity of an actor" msgstr "Opacidade dun actor" -#: ../clutter/clutter-actor.c:4257 +#: ../clutter/clutter-actor.c:4266 msgid "Offscreen redirect" msgstr "Redirección fóra da pantalal" -#: ../clutter/clutter-actor.c:4258 +#: ../clutter/clutter-actor.c:4267 msgid "Flags controlling when to flatten the actor into a single image" msgstr "Opcións que controlan se se debe aplanar o actor nunha única imaxe" -#: ../clutter/clutter-actor.c:4276 +#: ../clutter/clutter-actor.c:4285 msgid "Visible" msgstr "Visíbel" -#: ../clutter/clutter-actor.c:4277 +#: ../clutter/clutter-actor.c:4286 msgid "Whether the actor is visible or not" msgstr "Se o actor é visíbel ou non" -#: ../clutter/clutter-actor.c:4292 +#: ../clutter/clutter-actor.c:4301 msgid "Mapped" msgstr "Mapeamento" -#: ../clutter/clutter-actor.c:4293 +#: ../clutter/clutter-actor.c:4302 msgid "Whether the actor will be painted" msgstr "Cando o actor será pintado" -#: ../clutter/clutter-actor.c:4307 +#: ../clutter/clutter-actor.c:4316 msgid "Realized" msgstr "Decatado" -#: ../clutter/clutter-actor.c:4308 +#: ../clutter/clutter-actor.c:4317 msgid "Whether the actor has been realized" msgstr "Cando o actor se decata" -#: ../clutter/clutter-actor.c:4324 +#: ../clutter/clutter-actor.c:4333 msgid "Reactive" msgstr "Reactivo" -#: ../clutter/clutter-actor.c:4325 +#: ../clutter/clutter-actor.c:4334 msgid "Whether the actor is reactive to events" msgstr "Cando o actor reacciona a accións" -#: ../clutter/clutter-actor.c:4337 +#: ../clutter/clutter-actor.c:4346 msgid "Has Clip" msgstr "Ten recorte" -#: ../clutter/clutter-actor.c:4338 +#: ../clutter/clutter-actor.c:4347 msgid "Whether the actor has a clip set" msgstr "Cando o actor ten un conxunto de recorte" -#: ../clutter/clutter-actor.c:4353 +#: ../clutter/clutter-actor.c:4362 msgid "Clip" msgstr "Recorte" -#: ../clutter/clutter-actor.c:4354 +#: ../clutter/clutter-actor.c:4363 msgid "The clip region for the actor" msgstr "A rexión de recorte para o actor" -#: ../clutter/clutter-actor.c:4368 ../clutter/clutter-actor-meta.c:207 +#: ../clutter/clutter-actor.c:4377 ../clutter/clutter-actor-meta.c:207 #: ../clutter/clutter-binding-pool.c:319 ../clutter/clutter-input-device.c:236 msgid "Name" msgstr "Nome" -#: ../clutter/clutter-actor.c:4369 +#: ../clutter/clutter-actor.c:4378 msgid "Name of the actor" msgstr "Nome do actor" -#: ../clutter/clutter-actor.c:4383 +#: ../clutter/clutter-actor.c:4392 msgid "Scale X" msgstr "Escala X" -#: ../clutter/clutter-actor.c:4384 +#: ../clutter/clutter-actor.c:4393 msgid "Scale factor on the X axis" msgstr "Factor de escala para o eixo X" -#: ../clutter/clutter-actor.c:4399 +#: ../clutter/clutter-actor.c:4408 msgid "Scale Y" msgstr "Escala Y" -#: ../clutter/clutter-actor.c:4400 +#: ../clutter/clutter-actor.c:4409 msgid "Scale factor on the Y axis" msgstr "Factor de escala para o eixo Y" -#: ../clutter/clutter-actor.c:4415 +#: ../clutter/clutter-actor.c:4424 msgid "Scale Center X" msgstr "Centro da escala X" -#: ../clutter/clutter-actor.c:4416 +#: ../clutter/clutter-actor.c:4425 msgid "Horizontal scale center" msgstr "Centro na escala horizontal" -#: ../clutter/clutter-actor.c:4431 +#: ../clutter/clutter-actor.c:4440 msgid "Scale Center Y" msgstr "Centro da escala Y" -#: ../clutter/clutter-actor.c:4432 +#: ../clutter/clutter-actor.c:4441 msgid "Vertical scale center" msgstr "Centro na escala vertical" -#: ../clutter/clutter-actor.c:4447 +#: ../clutter/clutter-actor.c:4456 msgid "Scale Gravity" msgstr "Escala de gravidade" -#: ../clutter/clutter-actor.c:4448 +#: ../clutter/clutter-actor.c:4457 msgid "The center of scaling" msgstr "O centro da escala" -#: ../clutter/clutter-actor.c:4465 +#: ../clutter/clutter-actor.c:4474 msgid "Rotation Angle X" msgstr "Ángulo de rotación de X" -#: ../clutter/clutter-actor.c:4466 +#: ../clutter/clutter-actor.c:4475 msgid "The rotation angle on the X axis" msgstr "Ángulo de rotación do eixo X" -#: ../clutter/clutter-actor.c:4481 +#: ../clutter/clutter-actor.c:4490 msgid "Rotation Angle Y" msgstr "Ángulo de rotación Y" -#: ../clutter/clutter-actor.c:4482 +#: ../clutter/clutter-actor.c:4491 msgid "The rotation angle on the Y axis" msgstr "Ángulo de rotación do eixo Y" -#: ../clutter/clutter-actor.c:4497 +#: ../clutter/clutter-actor.c:4506 msgid "Rotation Angle Z" msgstr "Ángulo de rotación Z" -#: ../clutter/clutter-actor.c:4498 +#: ../clutter/clutter-actor.c:4507 msgid "The rotation angle on the Z axis" msgstr "Ángulo de rotación do eixo Z" -#: ../clutter/clutter-actor.c:4513 +#: ../clutter/clutter-actor.c:4522 msgid "Rotation Center X" msgstr "Centro de rotación X" -#: ../clutter/clutter-actor.c:4514 +#: ../clutter/clutter-actor.c:4523 msgid "The rotation center on the X axis" msgstr "O centro de rotación do eixo X" -#: ../clutter/clutter-actor.c:4530 +#: ../clutter/clutter-actor.c:4539 msgid "Rotation Center Y" msgstr "Centro de rotación Y" -#: ../clutter/clutter-actor.c:4531 +#: ../clutter/clutter-actor.c:4540 msgid "The rotation center on the Y axis" msgstr "O centro de rotación no eixo Y" -#: ../clutter/clutter-actor.c:4547 +#: ../clutter/clutter-actor.c:4556 msgid "Rotation Center Z" msgstr "Centro de rotación Z" -#: ../clutter/clutter-actor.c:4548 +#: ../clutter/clutter-actor.c:4557 msgid "The rotation center on the Z axis" msgstr "O centro de rotación no eixo Z" -#: ../clutter/clutter-actor.c:4564 +#: ../clutter/clutter-actor.c:4573 msgid "Rotation Center Z Gravity" msgstr "Gravidade do centro de rotación Z" -#: ../clutter/clutter-actor.c:4565 +#: ../clutter/clutter-actor.c:4574 msgid "Center point for rotation around the Z axis" msgstr "Punto central de rotación arredor do eixo Z" -#: ../clutter/clutter-actor.c:4583 +#: ../clutter/clutter-actor.c:4592 msgid "Anchor X" msgstr "Ancoraxe X" -#: ../clutter/clutter-actor.c:4584 +#: ../clutter/clutter-actor.c:4593 msgid "X coordinate of the anchor point" msgstr "Coordenada X do punto de ancoraxe" -#: ../clutter/clutter-actor.c:4600 +#: ../clutter/clutter-actor.c:4609 msgid "Anchor Y" msgstr "Ancoraxe Y" -#: ../clutter/clutter-actor.c:4601 +#: ../clutter/clutter-actor.c:4610 msgid "Y coordinate of the anchor point" msgstr "Coordenada Y do punto de ancoraxe" -#: ../clutter/clutter-actor.c:4616 +#: ../clutter/clutter-actor.c:4625 msgid "Anchor Gravity" msgstr "Gravidade do ancoraxe" -#: ../clutter/clutter-actor.c:4617 +#: ../clutter/clutter-actor.c:4626 msgid "The anchor point as a ClutterGravity" msgstr "O punto de ancoraxe como ClutterGravity" -#: ../clutter/clutter-actor.c:4636 +#: ../clutter/clutter-actor.c:4645 msgid "Show on set parent" msgstr "Mostrar no pai do conxunto" -#: ../clutter/clutter-actor.c:4637 +#: ../clutter/clutter-actor.c:4646 msgid "Whether the actor is shown when parented" msgstr "Especifica se o actor se mostra ao seren desenvolvido polo pai" -#: ../clutter/clutter-actor.c:4657 +#: ../clutter/clutter-actor.c:4666 msgid "Clip to Allocation" msgstr "Fragmento de asignación" -#: ../clutter/clutter-actor.c:4658 +#: ../clutter/clutter-actor.c:4667 msgid "Sets the clip region to track the actor's allocation" msgstr "Estabelece a rexión de recorte para rastrexar a asignación do actor" -#: ../clutter/clutter-actor.c:4668 +#: ../clutter/clutter-actor.c:4677 msgid "Text Direction" msgstr "Dirección do texto" -#: ../clutter/clutter-actor.c:4669 +#: ../clutter/clutter-actor.c:4678 msgid "Direction of the text" msgstr "A dirección do texto" -#: ../clutter/clutter-actor.c:4687 +#: ../clutter/clutter-actor.c:4696 msgid "Has Pointer" msgstr "Ten punteiro" -#: ../clutter/clutter-actor.c:4688 +#: ../clutter/clutter-actor.c:4697 msgid "Whether the actor contains the pointer of an input device" msgstr "Cando o actor ten un punteiro dun dispositivo de entrada" -#: ../clutter/clutter-actor.c:4705 +#: ../clutter/clutter-actor.c:4714 msgid "Actions" msgstr "Accións" -#: ../clutter/clutter-actor.c:4706 +#: ../clutter/clutter-actor.c:4715 msgid "Adds an action to the actor" msgstr "Engade unha acción ao actor" -#: ../clutter/clutter-actor.c:4720 +#: ../clutter/clutter-actor.c:4729 msgid "Constraints" msgstr "Restricións" -#: ../clutter/clutter-actor.c:4721 +#: ../clutter/clutter-actor.c:4730 msgid "Adds a constraint to the actor" msgstr "Engade unha restrición ao actor" -#: ../clutter/clutter-actor.c:4735 +#: ../clutter/clutter-actor.c:4744 msgid "Effect" msgstr "Efecto" -#: ../clutter/clutter-actor.c:4736 +#: ../clutter/clutter-actor.c:4745 msgid "Add an effect to be applied on the actor" msgstr "Engade un efecto para aplicato no actor" @@ -437,30 +437,30 @@ msgstr "Activado" msgid "Whether the meta is enabled" msgstr "Cando o destino está activado" -#: ../clutter/clutter-align-constraint.c:270 -#: ../clutter/clutter-bind-constraint.c:349 ../clutter/clutter-clone.c:340 +#: ../clutter/clutter-align-constraint.c:281 +#: ../clutter/clutter-bind-constraint.c:349 ../clutter/clutter-clone.c:345 #: ../clutter/clutter-snap-constraint.c:321 msgid "Source" msgstr "Orixe" -#: ../clutter/clutter-align-constraint.c:271 +#: ../clutter/clutter-align-constraint.c:282 msgid "The source of the alignment" msgstr "A orixe do aliñamento" -#: ../clutter/clutter-align-constraint.c:284 +#: ../clutter/clutter-align-constraint.c:295 msgid "Align Axis" msgstr "Aliñar o eixo" -#: ../clutter/clutter-align-constraint.c:285 +#: ../clutter/clutter-align-constraint.c:296 msgid "The axis to align the position to" msgstr "Os eixos para aliñar a posición de" -#: ../clutter/clutter-align-constraint.c:304 +#: ../clutter/clutter-align-constraint.c:315 #: ../clutter/clutter-desaturate-effect.c:304 msgid "Factor" msgstr "Factor" -#: ../clutter/clutter-align-constraint.c:305 +#: ../clutter/clutter-align-constraint.c:316 msgid "The alignment factor, between 0.0 and 1.0" msgstr "Factor de aliñamento, entre 0,0 e 1,0" @@ -540,191 +540,14 @@ msgstr "A duración da animación" msgid "The timeline of the animation" msgstr "Liña de tempo da animación" -#: ../clutter/deprecated/clutter-behaviour.c:241 -msgid "Alpha Object to drive the behaviour" -msgstr "Obxecto alfa para guiar o comportamento" +#: ../clutter/clutter-backend.c:333 +msgid "Unable to initialize the Clutter backend" +msgstr "Non foi posíbel inicializar o motor de Clutter" -#: ../clutter/deprecated/clutter-behaviour-depth.c:180 -msgid "Start Depth" -msgstr "Profundidade de inicio" - -#: ../clutter/deprecated/clutter-behaviour-depth.c:181 -msgid "Initial depth to apply" -msgstr "Profundidade inicial a aplicar" - -#: ../clutter/deprecated/clutter-behaviour-depth.c:196 -msgid "End Depth" -msgstr "Profundidade de remate" - -#: ../clutter/deprecated/clutter-behaviour-depth.c:197 -msgid "Final depth to apply" -msgstr "Profundidade final a aplicar" - -#: ../clutter/deprecated/clutter-behaviour-ellipse.c:399 -msgid "Start Angle" -msgstr "Ángulo de inicio" - -#: ../clutter/deprecated/clutter-behaviour-ellipse.c:400 -#: ../clutter/deprecated/clutter-behaviour-rotate.c:282 -msgid "Initial angle" -msgstr "Ángulo inicial" - -#: ../clutter/deprecated/clutter-behaviour-ellipse.c:415 -msgid "End Angle" -msgstr "Ángulo de remate" - -#: ../clutter/deprecated/clutter-behaviour-ellipse.c:416 -#: ../clutter/deprecated/clutter-behaviour-rotate.c:300 -msgid "Final angle" -msgstr "Ángulo final" - -#: ../clutter/deprecated/clutter-behaviour-ellipse.c:431 -msgid "Angle x tilt" -msgstr "Ángulo de inclinación X" - -#: ../clutter/deprecated/clutter-behaviour-ellipse.c:432 -msgid "Tilt of the ellipse around x axis" -msgstr "Inclinación da elipse arredor do eixo X" - -#: ../clutter/deprecated/clutter-behaviour-ellipse.c:447 -msgid "Angle y tilt" -msgstr "Ángulo de inclinación Y" - -#: ../clutter/deprecated/clutter-behaviour-ellipse.c:448 -msgid "Tilt of the ellipse around y axis" -msgstr "Inclinación da elipse arredor do eixo Y" - -#: ../clutter/deprecated/clutter-behaviour-ellipse.c:463 -msgid "Angle z tilt" -msgstr "Ángulo de inclinación Z" - -#: ../clutter/deprecated/clutter-behaviour-ellipse.c:464 -msgid "Tilt of the ellipse around z axis" -msgstr "Inclinación da elipse arredor do eixo Z" - -#: ../clutter/deprecated/clutter-behaviour-ellipse.c:480 -msgid "Width of the ellipse" -msgstr "Largo da elipse" - -#: ../clutter/deprecated/clutter-behaviour-ellipse.c:496 -msgid "Height of ellipse" -msgstr "Altura da elipse" - -#: ../clutter/deprecated/clutter-behaviour-ellipse.c:511 -msgid "Center" -msgstr "Centro" - -#: ../clutter/deprecated/clutter-behaviour-ellipse.c:512 -msgid "Center of ellipse" -msgstr "Centro da elipse" - -#: ../clutter/deprecated/clutter-behaviour-ellipse.c:526 -#: ../clutter/deprecated/clutter-behaviour-rotate.c:335 -#: ../clutter/clutter-timeline.c:310 -msgid "Direction" -msgstr "Dirección" - -#: ../clutter/deprecated/clutter-behaviour-ellipse.c:527 -#: ../clutter/deprecated/clutter-behaviour-rotate.c:336 -msgid "Direction of rotation" -msgstr "Dirección da rotación" - -#: ../clutter/deprecated/clutter-behaviour-opacity.c:183 -msgid "Opacity Start" -msgstr "Opacidade de inicio" - -#: ../clutter/deprecated/clutter-behaviour-opacity.c:184 -msgid "Initial opacity level" -msgstr "Nivel inicial de opacidade" - -#: ../clutter/deprecated/clutter-behaviour-opacity.c:201 -msgid "Opacity End" -msgstr "Opacidade de remate" - -#: ../clutter/deprecated/clutter-behaviour-opacity.c:202 -msgid "Final opacity level" -msgstr "Nivel final de opacidade" - -#: ../clutter/deprecated/clutter-behaviour-path.c:224 -#: ../clutter/clutter-path-constraint.c:212 -msgid "Path" -msgstr "Ruta" - -#: ../clutter/deprecated/clutter-behaviour-path.c:225 -msgid "The ClutterPath object representing the path to animate along" -msgstr "O obxecto ClutterPath representa a ruta ao longo da animación" - -#: ../clutter/deprecated/clutter-behaviour-rotate.c:281 -msgid "Angle Begin" -msgstr "Ángulo inicial" - -#: ../clutter/deprecated/clutter-behaviour-rotate.c:299 -msgid "Angle End" -msgstr "Ángulo de remate" - -#: ../clutter/deprecated/clutter-behaviour-rotate.c:317 -msgid "Axis" -msgstr "Eixo" - -#: ../clutter/deprecated/clutter-behaviour-rotate.c:318 -msgid "Axis of rotation" -msgstr "Eixo de rotación" - -#: ../clutter/deprecated/clutter-behaviour-rotate.c:353 -msgid "Center X" -msgstr "Centro X" - -#: ../clutter/deprecated/clutter-behaviour-rotate.c:354 -msgid "X coordinate of the center of rotation" -msgstr "Coordenada X do centro de rotación" - -#: ../clutter/deprecated/clutter-behaviour-rotate.c:371 -msgid "Center Y" -msgstr "Centro Y" - -#: ../clutter/deprecated/clutter-behaviour-rotate.c:372 -msgid "Y coordinate of the center of rotation" -msgstr "Coordenada Y do centro de rotación" - -#: ../clutter/deprecated/clutter-behaviour-rotate.c:389 -msgid "Center Z" -msgstr "Centro Z" - -#: ../clutter/deprecated/clutter-behaviour-rotate.c:390 -msgid "Z coordinate of the center of rotation" -msgstr "Coordenada Z do centro de rotación" - -#: ../clutter/deprecated/clutter-behaviour-scale.c:224 -msgid "X Start Scale" -msgstr "Escala X de inicio" - -#: ../clutter/deprecated/clutter-behaviour-scale.c:225 -msgid "Initial scale on the X axis" -msgstr "Escala inicial no eixo X" - -#: ../clutter/deprecated/clutter-behaviour-scale.c:243 -msgid "X End Scale" -msgstr "Escala X de remate" - -#: ../clutter/deprecated/clutter-behaviour-scale.c:244 -msgid "Final scale on the X axis" -msgstr "Escala final no eixo X" - -#: ../clutter/deprecated/clutter-behaviour-scale.c:262 -msgid "Y Start Scale" -msgstr "Escala Y de inicio" - -#: ../clutter/deprecated/clutter-behaviour-scale.c:263 -msgid "Initial scale on the Y axis" -msgstr "Escala inicial no eixo Y" - -#: ../clutter/deprecated/clutter-behaviour-scale.c:281 -msgid "Y End Scale" -msgstr "Escala Y de remate" - -#: ../clutter/deprecated/clutter-behaviour-scale.c:282 -msgid "Final scale on the Y axis" -msgstr "Escala final no eixo Y" +#: ../clutter/clutter-backend.c:407 +#, c-format +msgid "The backend of type '%s' does not support creating multiple stages" +msgstr "O motor do tipo «%s» non admite crear múltiples escenarios" #: ../clutter/clutter-bind-constraint.c:350 msgid "The source of the binding" @@ -971,7 +794,7 @@ msgstr "Límite da pulsación longa" msgid "The maximum threshold before a long press is cancelled" msgstr "O límite máximo antes de cancelar unha pulsación longa" -#: ../clutter/clutter-clone.c:341 +#: ../clutter/clutter-clone.c:346 msgid "Specifies the actor to be cloned" msgstr "Especifica o actor que clonar" @@ -1196,59 +1019,59 @@ msgstr "O xestor que creou estes datos" #. * Do NOT translate it to non-English e.g. "predefinito:LTR"! If #. * it isn't default:LTR or default:RTL it will not work. #. -#: ../clutter/clutter-main.c:717 +#: ../clutter/clutter-main.c:752 msgid "default:LTR" msgstr "default:LTR" -#: ../clutter/clutter-main.c:1528 +#: ../clutter/clutter-main.c:1610 msgid "Show frames per second" msgstr "Mostrar cadros por segundo" -#: ../clutter/clutter-main.c:1530 +#: ../clutter/clutter-main.c:1612 msgid "Default frame rate" msgstr "Taxa predeterminada de cadros" -#: ../clutter/clutter-main.c:1532 +#: ../clutter/clutter-main.c:1614 msgid "Make all warnings fatal" msgstr "Facer que todos os avisos sexan fatais" -#: ../clutter/clutter-main.c:1535 +#: ../clutter/clutter-main.c:1617 msgid "Direction for the text" msgstr "Dirección para o texto" -#: ../clutter/clutter-main.c:1538 +#: ../clutter/clutter-main.c:1620 msgid "Disable mipmapping on text" msgstr "Desactivar mipmapping no texto" -#: ../clutter/clutter-main.c:1541 +#: ../clutter/clutter-main.c:1623 msgid "Use 'fuzzy' picking" msgstr "Usar recolección «difusa»" -#: ../clutter/clutter-main.c:1544 +#: ../clutter/clutter-main.c:1626 msgid "Clutter debugging flags to set" msgstr "Bandeiras de depuración de Clutter que seleccionar" -#: ../clutter/clutter-main.c:1546 +#: ../clutter/clutter-main.c:1628 msgid "Clutter debugging flags to unset" msgstr "Bandeiras de depuración de Cluter que deseleccionar" -#: ../clutter/clutter-main.c:1550 +#: ../clutter/clutter-main.c:1632 msgid "Clutter profiling flags to set" msgstr "Bandeiras de perfilado de Clutter que estabelecer" -#: ../clutter/clutter-main.c:1552 +#: ../clutter/clutter-main.c:1634 msgid "Clutter profiling flags to unset" msgstr "Bandeiras de perfilado de Clutter que desestabelecer" -#: ../clutter/clutter-main.c:1555 +#: ../clutter/clutter-main.c:1637 msgid "Enable accessibility" msgstr "Activar a accesibilidade" -#: ../clutter/clutter-main.c:1743 +#: ../clutter/clutter-main.c:1829 msgid "Clutter Options" msgstr "Opcións de Clutter" -#: ../clutter/clutter-main.c:1744 +#: ../clutter/clutter-main.c:1830 msgid "Show Clutter Options" msgstr "Mostrar as opcións de Clutter" @@ -1320,6 +1143,11 @@ msgstr "O nivel de ateigamento do búfer" msgid "The duration of the stream, in seconds" msgstr "A duración do fluxo, en segundos" +#: ../clutter/clutter-path-constraint.c:212 +#: ../clutter/deprecated/clutter-behaviour-path.c:224 +msgid "Path" +msgstr "Ruta" + #: ../clutter/clutter-path-constraint.c:213 msgid "The path used to constrain an actor" msgstr "A ruta empregada para restrinxir a un actor" @@ -1481,47 +1309,6 @@ msgid "How long to show the last input character in hidden entries" msgstr "" "Canto tempo se debe mostrar o último carácter escrito nas entradas ocultas" -#: ../clutter/deprecated/clutter-shader.c:257 -msgid "Vertex Source" -msgstr "Orixe do vértice" - -#: ../clutter/deprecated/clutter-shader.c:258 -msgid "Source of vertex shader" -msgstr "Orixe do vértice de sombreado" - -#: ../clutter/deprecated/clutter-shader.c:274 -msgid "Fragment Source" -msgstr "Orixe do fragmento" - -#: ../clutter/deprecated/clutter-shader.c:275 -msgid "Source of fragment shader" -msgstr "Orixe do fragmento de sombreado" - -#: ../clutter/deprecated/clutter-shader.c:292 -msgid "Compiled" -msgstr "Compilado" - -#: ../clutter/deprecated/clutter-shader.c:293 -msgid "Whether the shader is compiled and linked" -msgstr "Cando o sombreado é compilado e ligado" - -#: ../clutter/deprecated/clutter-shader.c:310 -msgid "Whether the shader is enabled" -msgstr "Cando o sombreado está activado" - -#: ../clutter/deprecated/clutter-shader.c:521 -#, c-format -msgid "%s compilation failed: %s" -msgstr "%s produciuse un fallo na compilación: %s" - -#: ../clutter/deprecated/clutter-shader.c:522 -msgid "Vertex shader" -msgstr "Vértice de sombreado" - -#: ../clutter/deprecated/clutter-shader.c:523 -msgid "Fragment shader" -msgstr "Sombreado de fragmentos" - #: ../clutter/clutter-shader-effect.c:482 msgid "Shader Type" msgstr "Tipo de sombreado" @@ -2078,6 +1865,12 @@ msgstr "Atraso antes de comezar" msgid "Duration of the timeline in milliseconds" msgstr "Duración da liña de tempo en milisegundos" +#: ../clutter/clutter-timeline.c:310 +#: ../clutter/deprecated/clutter-behaviour-ellipse.c:526 +#: ../clutter/deprecated/clutter-behaviour-rotate.c:335 +msgid "Direction" +msgstr "Dirección" + #: ../clutter/clutter-timeline.c:311 msgid "Direction of the timeline" msgstr "Dirección da liña de tempo" @@ -2090,6 +1883,222 @@ msgstr "Inversión automática" msgid "Whether the direction should be reversed when reaching the end" msgstr "Se a dirección debe ser revertida cando chega a fin" +#: ../clutter/deprecated/clutter-behaviour.c:241 +msgid "Alpha Object to drive the behaviour" +msgstr "Obxecto alfa para guiar o comportamento" + +#: ../clutter/deprecated/clutter-behaviour-depth.c:180 +msgid "Start Depth" +msgstr "Profundidade de inicio" + +#: ../clutter/deprecated/clutter-behaviour-depth.c:181 +msgid "Initial depth to apply" +msgstr "Profundidade inicial a aplicar" + +#: ../clutter/deprecated/clutter-behaviour-depth.c:196 +msgid "End Depth" +msgstr "Profundidade de remate" + +#: ../clutter/deprecated/clutter-behaviour-depth.c:197 +msgid "Final depth to apply" +msgstr "Profundidade final a aplicar" + +#: ../clutter/deprecated/clutter-behaviour-ellipse.c:399 +msgid "Start Angle" +msgstr "Ángulo de inicio" + +#: ../clutter/deprecated/clutter-behaviour-ellipse.c:400 +#: ../clutter/deprecated/clutter-behaviour-rotate.c:282 +msgid "Initial angle" +msgstr "Ángulo inicial" + +#: ../clutter/deprecated/clutter-behaviour-ellipse.c:415 +msgid "End Angle" +msgstr "Ángulo de remate" + +#: ../clutter/deprecated/clutter-behaviour-ellipse.c:416 +#: ../clutter/deprecated/clutter-behaviour-rotate.c:300 +msgid "Final angle" +msgstr "Ángulo final" + +#: ../clutter/deprecated/clutter-behaviour-ellipse.c:431 +msgid "Angle x tilt" +msgstr "Ángulo de inclinación X" + +#: ../clutter/deprecated/clutter-behaviour-ellipse.c:432 +msgid "Tilt of the ellipse around x axis" +msgstr "Inclinación da elipse arredor do eixo X" + +#: ../clutter/deprecated/clutter-behaviour-ellipse.c:447 +msgid "Angle y tilt" +msgstr "Ángulo de inclinación Y" + +#: ../clutter/deprecated/clutter-behaviour-ellipse.c:448 +msgid "Tilt of the ellipse around y axis" +msgstr "Inclinación da elipse arredor do eixo Y" + +#: ../clutter/deprecated/clutter-behaviour-ellipse.c:463 +msgid "Angle z tilt" +msgstr "Ángulo de inclinación Z" + +#: ../clutter/deprecated/clutter-behaviour-ellipse.c:464 +msgid "Tilt of the ellipse around z axis" +msgstr "Inclinación da elipse arredor do eixo Z" + +#: ../clutter/deprecated/clutter-behaviour-ellipse.c:480 +msgid "Width of the ellipse" +msgstr "Largo da elipse" + +#: ../clutter/deprecated/clutter-behaviour-ellipse.c:496 +msgid "Height of ellipse" +msgstr "Altura da elipse" + +#: ../clutter/deprecated/clutter-behaviour-ellipse.c:511 +msgid "Center" +msgstr "Centro" + +#: ../clutter/deprecated/clutter-behaviour-ellipse.c:512 +msgid "Center of ellipse" +msgstr "Centro da elipse" + +#: ../clutter/deprecated/clutter-behaviour-ellipse.c:527 +#: ../clutter/deprecated/clutter-behaviour-rotate.c:336 +msgid "Direction of rotation" +msgstr "Dirección da rotación" + +#: ../clutter/deprecated/clutter-behaviour-opacity.c:183 +msgid "Opacity Start" +msgstr "Opacidade de inicio" + +#: ../clutter/deprecated/clutter-behaviour-opacity.c:184 +msgid "Initial opacity level" +msgstr "Nivel inicial de opacidade" + +#: ../clutter/deprecated/clutter-behaviour-opacity.c:201 +msgid "Opacity End" +msgstr "Opacidade de remate" + +#: ../clutter/deprecated/clutter-behaviour-opacity.c:202 +msgid "Final opacity level" +msgstr "Nivel final de opacidade" + +#: ../clutter/deprecated/clutter-behaviour-path.c:225 +msgid "The ClutterPath object representing the path to animate along" +msgstr "O obxecto ClutterPath representa a ruta ao longo da animación" + +#: ../clutter/deprecated/clutter-behaviour-rotate.c:281 +msgid "Angle Begin" +msgstr "Ángulo inicial" + +#: ../clutter/deprecated/clutter-behaviour-rotate.c:299 +msgid "Angle End" +msgstr "Ángulo de remate" + +#: ../clutter/deprecated/clutter-behaviour-rotate.c:317 +msgid "Axis" +msgstr "Eixo" + +#: ../clutter/deprecated/clutter-behaviour-rotate.c:318 +msgid "Axis of rotation" +msgstr "Eixo de rotación" + +#: ../clutter/deprecated/clutter-behaviour-rotate.c:353 +msgid "Center X" +msgstr "Centro X" + +#: ../clutter/deprecated/clutter-behaviour-rotate.c:354 +msgid "X coordinate of the center of rotation" +msgstr "Coordenada X do centro de rotación" + +#: ../clutter/deprecated/clutter-behaviour-rotate.c:371 +msgid "Center Y" +msgstr "Centro Y" + +#: ../clutter/deprecated/clutter-behaviour-rotate.c:372 +msgid "Y coordinate of the center of rotation" +msgstr "Coordenada Y do centro de rotación" + +#: ../clutter/deprecated/clutter-behaviour-rotate.c:389 +msgid "Center Z" +msgstr "Centro Z" + +#: ../clutter/deprecated/clutter-behaviour-rotate.c:390 +msgid "Z coordinate of the center of rotation" +msgstr "Coordenada Z do centro de rotación" + +#: ../clutter/deprecated/clutter-behaviour-scale.c:224 +msgid "X Start Scale" +msgstr "Escala X de inicio" + +#: ../clutter/deprecated/clutter-behaviour-scale.c:225 +msgid "Initial scale on the X axis" +msgstr "Escala inicial no eixo X" + +#: ../clutter/deprecated/clutter-behaviour-scale.c:243 +msgid "X End Scale" +msgstr "Escala X de remate" + +#: ../clutter/deprecated/clutter-behaviour-scale.c:244 +msgid "Final scale on the X axis" +msgstr "Escala final no eixo X" + +#: ../clutter/deprecated/clutter-behaviour-scale.c:262 +msgid "Y Start Scale" +msgstr "Escala Y de inicio" + +#: ../clutter/deprecated/clutter-behaviour-scale.c:263 +msgid "Initial scale on the Y axis" +msgstr "Escala inicial no eixo Y" + +#: ../clutter/deprecated/clutter-behaviour-scale.c:281 +msgid "Y End Scale" +msgstr "Escala Y de remate" + +#: ../clutter/deprecated/clutter-behaviour-scale.c:282 +msgid "Final scale on the Y axis" +msgstr "Escala final no eixo Y" + +#: ../clutter/deprecated/clutter-shader.c:257 +msgid "Vertex Source" +msgstr "Orixe do vértice" + +#: ../clutter/deprecated/clutter-shader.c:258 +msgid "Source of vertex shader" +msgstr "Orixe do vértice de sombreado" + +#: ../clutter/deprecated/clutter-shader.c:274 +msgid "Fragment Source" +msgstr "Orixe do fragmento" + +#: ../clutter/deprecated/clutter-shader.c:275 +msgid "Source of fragment shader" +msgstr "Orixe do fragmento de sombreado" + +#: ../clutter/deprecated/clutter-shader.c:292 +msgid "Compiled" +msgstr "Compilado" + +#: ../clutter/deprecated/clutter-shader.c:293 +msgid "Whether the shader is compiled and linked" +msgstr "Cando o sombreado é compilado e ligado" + +#: ../clutter/deprecated/clutter-shader.c:310 +msgid "Whether the shader is enabled" +msgstr "Cando o sombreado está activado" + +#: ../clutter/deprecated/clutter-shader.c:521 +#, c-format +msgid "%s compilation failed: %s" +msgstr "%s produciuse un fallo na compilación: %s" + +#: ../clutter/deprecated/clutter-shader.c:522 +msgid "Vertex shader" +msgstr "Vértice de sombreado" + +#: ../clutter/deprecated/clutter-shader.c:523 +msgid "Fragment shader" +msgstr "Sombreado de fragmentos" + #: ../clutter/evdev/clutter-input-device-evdev.c:147 msgid "sysfs Path" msgstr "Ruta a «sysfs»" @@ -2106,19 +2115,25 @@ msgstr "Ruta ao dispositivo" msgid "Path of the device node" msgstr "Ruta ao nodo dodispositivo" -#: ../clutter/x11/clutter-backend-x11.c:483 +#: ../clutter/gdk/clutter-backend-gdk.c:287 +#, c-format +msgid "Could not find a suitable CoglWinsys for a GdkDisplay of type %s" +msgstr "" +"Non foi posíbel atopar un CoglWinsys axeitado para un GdkDisplay do tipo %s" + +#: ../clutter/x11/clutter-backend-x11.c:506 msgid "X display to use" msgstr "Visor [display] X que usar" -#: ../clutter/x11/clutter-backend-x11.c:489 +#: ../clutter/x11/clutter-backend-x11.c:512 msgid "X screen to use" msgstr "Pantalla [screen] X que usar" -#: ../clutter/x11/clutter-backend-x11.c:494 +#: ../clutter/x11/clutter-backend-x11.c:517 msgid "Make X calls synchronous" msgstr "Facer que as chamadas a X sexan síncronas" -#: ../clutter/x11/clutter-backend-x11.c:501 +#: ../clutter/x11/clutter-backend-x11.c:524 msgid "Enable XInput support" msgstr "Activar a compatibilidade con XInput" @@ -2126,104 +2141,104 @@ msgstr "Activar a compatibilidade con XInput" msgid "The Clutter backend" msgstr "Infraestrutura do Clutter" -#: ../clutter/x11/clutter-x11-texture-pixmap.c:545 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:544 msgid "Pixmap" msgstr "Mapa de píxeles" -#: ../clutter/x11/clutter-x11-texture-pixmap.c:546 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:545 msgid "The X11 Pixmap to be bound" msgstr "Asociar o mapa de píxeles X11" -#: ../clutter/x11/clutter-x11-texture-pixmap.c:554 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:553 msgid "Pixmap width" msgstr "Largura do mapa de píxeles" -#: ../clutter/x11/clutter-x11-texture-pixmap.c:555 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:554 msgid "The width of the pixmap bound to this texture" msgstr "A largura do mapa de píxeles asociado a esta textura" -#: ../clutter/x11/clutter-x11-texture-pixmap.c:563 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:562 msgid "Pixmap height" msgstr "Altura do mapa de píxeles" -#: ../clutter/x11/clutter-x11-texture-pixmap.c:564 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:563 msgid "The height of the pixmap bound to this texture" msgstr "A altura do mapa de píxeles asociado a esta textura" -#: ../clutter/x11/clutter-x11-texture-pixmap.c:572 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:571 msgid "Pixmap Depth" msgstr "Profundidade do mapa de píxeles" -#: ../clutter/x11/clutter-x11-texture-pixmap.c:573 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:572 msgid "The depth (in number of bits) of the pixmap bound to this texture" msgstr "" "A profundidade (en número de bits) do mapa de píxeles asociado a esta textura" -#: ../clutter/x11/clutter-x11-texture-pixmap.c:581 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:580 msgid "Automatic Updates" msgstr "Actualizacións automáticas" -#: ../clutter/x11/clutter-x11-texture-pixmap.c:582 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:581 msgid "If the texture should be kept in sync with any pixmap changes." msgstr "" "Se a textura debe manterse sincronizada con calquera cambio do mapa de " "píxeles." -#: ../clutter/x11/clutter-x11-texture-pixmap.c:590 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:589 msgid "Window" msgstr "Xanela" -#: ../clutter/x11/clutter-x11-texture-pixmap.c:591 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:590 msgid "The X11 Window to be bound" msgstr "A xanela X11 que asociar" -#: ../clutter/x11/clutter-x11-texture-pixmap.c:599 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:598 msgid "Window Redirect Automatic" msgstr "Redirixir a xanela automaticamente" -#: ../clutter/x11/clutter-x11-texture-pixmap.c:600 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:599 msgid "If composite window redirects are set to Automatic (or Manual if false)" msgstr "" "Se a redirección da xanela composta estabelecese en automática (ou manual de " "ser falso)" -#: ../clutter/x11/clutter-x11-texture-pixmap.c:610 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:609 msgid "Window Mapped" msgstr "Mapeamento da xanela" -#: ../clutter/x11/clutter-x11-texture-pixmap.c:611 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:610 msgid "If window is mapped" msgstr "Se a xanela é mapeada" -#: ../clutter/x11/clutter-x11-texture-pixmap.c:620 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:619 msgid "Destroyed" msgstr "Destruída" -#: ../clutter/x11/clutter-x11-texture-pixmap.c:621 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:620 msgid "If window has been destroyed" msgstr "Se a xanela foi destruída" -#: ../clutter/x11/clutter-x11-texture-pixmap.c:629 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:628 msgid "Window X" msgstr "Xanela X" -#: ../clutter/x11/clutter-x11-texture-pixmap.c:630 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:629 msgid "X position of window on screen according to X11" msgstr "Posición X da xanela na pantalla conforme X11" -#: ../clutter/x11/clutter-x11-texture-pixmap.c:638 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:637 msgid "Window Y" msgstr "Xanela Y" -#: ../clutter/x11/clutter-x11-texture-pixmap.c:639 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:638 msgid "Y position of window on screen according to X11" msgstr "Posición Y da xanela na pantalla conforme X11" -#: ../clutter/x11/clutter-x11-texture-pixmap.c:646 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:645 msgid "Window Override Redirect" msgstr "Redireccionar substituír a xanela" -#: ../clutter/x11/clutter-x11-texture-pixmap.c:647 +#: ../clutter/x11/clutter-x11-texture-pixmap.c:646 msgid "If this is an override-redirect window" msgstr "De ser unha substitución-redirección da xanela"