bool m_refocus_needed;
bool m_reshow_needed;
bool m_restart_needed;
+ bool m_is_ise_alive;
std::vector<int> m_current_send_remoteinput_id;
std::vector<int> m_current_recv_remoteinput_id;
m_refocus_needed (false),
m_reshow_needed (false),
m_restart_needed (true),
+ m_is_ise_alive (false),
m_last_socket_client (-1), m_last_client_context (0),
m_ise_context_buffer (NULL), m_ise_context_length (0),
m_imdata_buffer (NULL), m_imdata_length (0) {
bool process_key_event (KeyEvent& key, uint32 serial, uint32 keycode) {
HelperClientIndex::iterator it = m_helper_client_index.find (m_current_helper_uuid);
+ if (m_is_ise_alive == false)
+ return false;
+
if (it != m_helper_client_index.end ()) {
int client;
uint32 context;
lock ();
m_client_repository [client_id] = info;
+ if (info.type == HELPER_CLIENT || info.type == HELPER_ACT_CLIENT)
+ m_is_ise_alive = true;
+
if (info.type == IMCONTROL_ACT_CLIENT) {
m_pending_active_imcontrol_id = client_id;
} else if (info.type == IMCONTROL_CLIENT) {
lock ();
HelperInfoRepository::iterator hiit = m_helper_active_info_repository.find (client_id);
- if (hiit != m_helper_active_info_repository.end ())
+ if (hiit != m_helper_active_info_repository.end ()) {
+ if (hiit->second.uuid == m_current_helper_uuid)
+ m_is_ise_alive = false;
+
m_helper_active_info_repository.erase (hiit);
+ }
unlock ();
} else if (client_info.type == IMCONTROL_ACT_CLIENT) {