Once in a while, it seems both scim and scim-launcher processes couldn't read data from .ime_info.db on boot-up.
/usr/lib/scim-1.0/scim-launcher -d -c simple -e none -f socket
The engine list of scim-launcher is none.
Then isf-panel-efl process read data successfully (even if DB is empty, panel reloads it) and try to launch helper ISE (set_active_ise).
However, SocketFrontEnd::run_helper() can't be called because m_helpers.size() is zero in HelperManager::run_helper().
In order to launch scim-helper-launcher process, add a call to get_helper_list() in HelperManager::run_helper().
Change-Id: If076eed288b177e09c05b7c3e698622951ea289f
if (m_receive_trans.get_data (strName) && strName.length () > 0) {
//std::cout << "ISE name list:" << strName << "\n";
//scim_split_string_list (name_list, strName);
-
+ LOGD ("%s\n", strName.c_str ());
/* The strName has all appids but here module name is necessary. */
HelperInfo info;
std::vector<ImeInfoDB> ime_info;
#include "scim_private.h"
#include "scim.h"
#include "scim_utility.h"
+#include <dlog.h>
+
+#ifdef LOG_TAG
+# undef LOG_TAG
+#endif
+#define LOG_TAG "SCIM_HELPER_MANAGER"
namespace scim {
void run_helper (const String &uuid, const String &config_name, const String &display)
{
SCIM_DEBUG_MAIN(1) << __FUNCTION__ << "...\n";
- if (!uuid.length () || !m_helpers.size ())
+ if (!uuid.length ()) {
+ LOGW ("Invalid uuid");
return;
- if (!m_socket_client.is_connected () && !open_connection ())
+ }
+ if (!m_socket_client.is_connected () && !open_connection ()) {
+ LOGW ("m_socket_client connection failed");
return;
+ }
+ if (!m_helpers.size ())
+ get_helper_list ();
Transaction trans;
for (int i = 0; i < 3; ++i) {