modifiers);
//Waiting for filter_key_event_done from IME.
//This function should return IME filtering result with boolean type.
- while (ecore_time_get() - start_time < WAIT_FOR_FILTER_DONE_SECOND){
- wl_display_dispatch(ecore_wl_display_get());
- if (imcontext->last_key_event_filter.serial == serial) {
- ret = imcontext->last_key_event_filter.state;
- break;
- } else if (imcontext->last_key_event_filter.serial > serial)
- return EINA_FALSE;
+ struct wl_display *display = ecore_wl_display_get();
+ if (display) {
+ while (ecore_time_get() - start_time < WAIT_FOR_FILTER_DONE_SECOND) {
+ wl_display_dispatch(display);
+
+ if (imcontext->last_key_event_filter.serial == serial) {
+ ret = imcontext->last_key_event_filter.state;
+ break;
+ } else if (imcontext->last_key_event_filter.serial > serial)
+ return EINA_FALSE;
+ }
}
LOGD ("elapsed : %.3f ms, serial (last, require) : (%d, %d)", (ecore_time_get() - start_time)*1000, imcontext->last_key_event_filter.serial, serial);
delete (m_impl);
m_impl = new TransactionReaderImpl ();
- m_impl->attach (reader.m_impl->m_holder);
- m_impl->m_read_pos = reader.m_impl->m_read_pos;
+ if (m_impl) {
+ m_impl->attach (reader.m_impl->m_holder);
+ m_impl->m_read_pos = reader.m_impl->m_read_pos;
+ }
+
return *this;
}