retval_t ScimBridgeAgentImpl::initialize () { accept_listener = ScimBridgeAgentAcceptListener::alloc (this); if (accept_listener == NULL) return RETVAL_FAILED; clients.push_back (accept_listener); display = scim_bridge_alloc_display (); if (scim_bridge_display_fetch_current (display)) { scim_bridge_perrorln ("Failed to allocate the current display"); return RETVAL_FAILED; } if (initialize_scim ()) { scim_bridge_perrorln ("Failed to initialize scim"); return RETVAL_FAILED; } scim_bridge_pdebugln (4, "Loading configurations..."); slot_reload_config (scim_config); scim_config->signal_connect_reload (slot (this, &ScimBridgeAgentImpl::slot_reload_config)); interruption_listener = ScimBridgeAgentInterruptionListener::alloc (); if (interruption_listener == NULL) return RETVAL_FAILED; clients.push_back (interruption_listener); panel_listener = ScimBridgeAgentPanelListener::alloc (scim_config->get_name (), display, this); if (panel_listener == NULL) return RETVAL_FAILED; clients.push_back (panel_listener); signal_listener = ScimBridgeAgentSignalListener::alloc (this); if (signal_listener == NULL) return RETVAL_FAILED; clients.push_back (signal_listener); ScimBridgeAgentIMContext::static_initialize (panel_listener, scim_language, scim_backend); scim_bridge_pdebugln (4, "ScimBridgeAgent is now ready"); return RETVAL_SUCCEEDED; }