From 8f8e88b692b04fc8cf1949fa1b98c7ae47846a90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alejandro=20Pi=C3=B1eiro?= Date: Mon, 26 Apr 2010 19:33:49 +0200 Subject: [PATCH] Initialize accessibility support on clutter_init Initialize the accessibility support calling cally_accessibility_init Take into account that this is required to at least be sure that CallyUtil class is available. It also modifies cally_accessibility_module_init in order to return if the initialization was fine (and the name, removing the module word). It also removes the gnome accessibility hooks, as it is not anymore module code. Solves CB#2098 --- clutter/cally/cally.c | 64 ++++++++++++++++++++++-------------------- clutter/cally/cally.h | 11 ++------ clutter/clutter-main.c | 27 ++++++++++++++++++ clutter/clutter-main.h | 1 + 4 files changed, 65 insertions(+), 38 deletions(-) diff --git a/clutter/cally/cally.c b/clutter/cally/cally.c index 85be3eb03..fd95d411c 100644 --- a/clutter/cally/cally.c +++ b/clutter/cally/cally.c @@ -22,11 +22,18 @@ #include "cally.h" +#include "cally-actor.h" +#include "cally-group.h" +#include "cally-stage.h" +#include "cally-text.h" +#include "cally-texture.h" +#include "cally-rectangle.h" +#include "cally-clone.h" + #include "cally-factory.h" #include "cally-util.h" -extern void gnome_accessibility_module_init (void); -extern void gnome_accessibility_module_shutdown (void); +#include "clutter-debug.h" static int cally_initialized = FALSE; @@ -39,11 +46,21 @@ CALLY_ACCESSIBLE_FACTORY (CALLY_TYPE_TEXTURE, cally_texture, cally_texture_new) CALLY_ACCESSIBLE_FACTORY (CALLY_TYPE_RECTANGLE, cally_rectangle, cally_rectangle_new) CALLY_ACCESSIBLE_FACTORY (CALLY_TYPE_CLONE, cally_clone, cally_clone_new) -void -cally_accessibility_module_init(void) +/** + * cally_acccessibility_init: + * + * Initializes the accessibility support. + * + * Return value: %TRUE if accessibility support has been correctly + * initialized. + * + * Since: 1.4 + */ +gboolean +cally_accessibility_init (void) { if (cally_initialized) - return; + return TRUE; cally_initialized = TRUE; @@ -59,35 +76,22 @@ cally_accessibility_module_init(void) /* Initialize the CallyUtility class */ g_type_class_unref (g_type_class_ref (CALLY_TYPE_UTIL)); - g_message ("Clutter Accessibility Module initialized"); -} + CLUTTER_NOTE (MISC, "Clutter Accessibility initialized"); - -/** - * gnome_accessibility_module_shutdown: - * @void: - * - * Common gnome hook to be used in order to activate the module - **/ -void -gnome_accessibility_module_init (void) -{ - cally_accessibility_module_init (); + return cally_initialized; } /** - * gnome_accessibility_module_shutdown: - * @void: + * cally_get_cally_initialized: * - * Common gnome hook to be used in order to de-activate the module - **/ -void -gnome_accessibility_module_shutdown (void) + * Returns if the accessibility support using cally is enabled. + * + * Return value: %TRUE if accessibility support has been correctly + * initialized. + * + * Since: 1.4 + */ +gboolean cally_get_cally_initialized (void) { - if (!cally_initialized) - return; - - cally_initialized = FALSE; - - g_message ("Clutter Accessibility Module shutdown"); + return cally_initialized; } diff --git a/clutter/cally/cally.h b/clutter/cally/cally.h index 7120809b4..4924dfec8 100644 --- a/clutter/cally/cally.h +++ b/clutter/cally/cally.h @@ -23,17 +23,12 @@ #ifndef __CALLY_H #define __CALLY_H -#include "cally-actor.h" -#include "cally-group.h" -#include "cally-stage.h" -#include "cally-text.h" -#include "cally-texture.h" -#include "cally-rectangle.h" -#include "cally-clone.h" +#include G_BEGIN_DECLS -void cally_accessibility_module_init(void); +gboolean cally_get_cally_initialized (void); +gboolean cally_accessibility_init (void); G_END_DECLS diff --git a/clutter/clutter-main.c b/clutter/clutter-main.c index 3392f9ce8..e2a406e03 100644 --- a/clutter/clutter-main.c +++ b/clutter/clutter-main.c @@ -114,6 +114,8 @@ #include "cogl/cogl.h" #include "pango/cogl-pango.h" +#include "cally.h" /* For accessibility support */ + /* main context */ static ClutterMainContext *ClutterCntx = NULL; @@ -128,6 +130,7 @@ static gboolean clutter_show_fps = FALSE; 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 guint clutter_default_fps = 60; @@ -203,6 +206,24 @@ clutter_get_show_fps (void) return clutter_show_fps; } +/** + * clutter_get_accessibility_enabled: + * + * Returns whether Clutter has accessibility support enabled. As + * least, a value of TRUE means that there are a proper AtkUtil + * implementation available + * + * Return value: %TRUE if Clutter has accessibility support enabled + * + * Since: 1.4 + */ +gboolean +clutter_get_accessibility_enabled (void) +{ + return cally_get_cally_initialized (); +} + + void _clutter_stage_maybe_relayout (ClutterActor *stage) { @@ -1591,6 +1612,10 @@ clutter_init_real (GError **error) clutter_is_initialized = TRUE; ctx->is_initialized = TRUE; + /* Initialize a11y */ + if (clutter_enable_accessibility) + cally_accessibility_init (); + return CLUTTER_INIT_SUCCESS; } @@ -1622,6 +1647,8 @@ static GOptionEntry clutter_args[] = { { "clutter-no-profile", 0, 0, G_OPTION_ARG_CALLBACK, clutter_arg_no_profile_cb, N_("Clutter profiling flags to unset"), "FLAGS" }, #endif /* CLUTTER_ENABLE_PROFILE */ + { "clutter-enable-accessibility", 0, 0, G_OPTION_ARG_NONE, &clutter_enable_accessibility, + N_("Enable accessibility"), NULL }, { NULL, }, }; diff --git a/clutter/clutter-main.h b/clutter/clutter-main.h index 067cef086..f5fe11b62 100644 --- a/clutter/clutter-main.h +++ b/clutter/clutter-main.h @@ -102,6 +102,7 @@ void clutter_do_event (ClutterEvent *event); gboolean clutter_get_debug_enabled (void); gboolean clutter_get_show_fps (void); gulong clutter_get_timestamp (void); +gboolean clutter_get_accessibility_enabled (void); /* Threading functions */ void clutter_threads_init (void);