devilhorns pushed a commit to branch master.
commit a48c4cd064b377223203053bd02c29490633b9a5
Author: Chris Michael <[email protected]>
Date: Wed Jul 24 09:15:43 2013 +0100
Check for valid text_input object before trying to call wayland
functions on it.
NB: Wayland (internal) functions typically do not do Any object
validity checking, so lets be proactive and do it here first.
Signed-off-by: Chris Michael <[email protected]>
---
src/modules/ecore_imf/wayland/wayland_imcontext.c | 56 ++++++++++++++---------
1 file changed, 35 insertions(+), 21 deletions(-)
diff --git a/src/modules/ecore_imf/wayland/wayland_imcontext.c
b/src/modules/ecore_imf/wayland/wayland_imcontext.c
index 3052994..a3e88d3 100644
--- a/src/modules/ecore_imf/wayland/wayland_imcontext.c
+++ b/src/modules/ecore_imf/wayland/wayland_imcontext.c
@@ -102,8 +102,9 @@ update_state(WaylandIMContext *imcontext)
/* cursor_pos is a byte index */
if (ecore_imf_context_surrounding_get(imcontext->ctx, &surrounding,
&cursor_pos))
{
- wl_text_input_set_surrounding_text(imcontext->text_input, surrounding,
- cursor_pos, cursor_pos);
+ if (imcontext->text_input)
+ wl_text_input_set_surrounding_text(imcontext->text_input,
surrounding,
+ cursor_pos, cursor_pos);
free(surrounding);
}
@@ -117,13 +118,16 @@ update_state(WaylandIMContext *imcontext)
EINA_LOG_DOM_INFO(_ecore_imf_wayland_log_dom, "canvas (x: %d, y: %d)",
canvas_x, canvas_y);
- wl_text_input_set_cursor_rectangle(imcontext->text_input,
- imcontext->cursor_location.x + canvas_x,
- imcontext->cursor_location.y + canvas_y,
- imcontext->cursor_location.width,
- imcontext->cursor_location.height);
+ if (imcontext->text_input)
+ {
+ wl_text_input_set_cursor_rectangle(imcontext->text_input,
+ imcontext->cursor_location.x +
canvas_x,
+ imcontext->cursor_location.y +
canvas_y,
+ imcontext->cursor_location.width,
+ imcontext->cursor_location.height);
- wl_text_input_commit_state(imcontext->text_input, ++imcontext->serial);
+ wl_text_input_commit_state(imcontext->text_input, ++imcontext->serial);
+ }
}
static Eina_Bool
@@ -507,7 +511,8 @@ text_input_leave(void *data,
{
WaylandIMContext *imcontext = (WaylandIMContext *)data;
- wl_text_input_hide_input_panel(text_input);
+ if (text_input)
+ wl_text_input_hide_input_panel(text_input);
/* clear preedit */
commit_preedit(imcontext);
@@ -574,8 +579,9 @@ wayland_im_context_add(Ecore_IMF_Context *ctx)
imcontext->text_input =
wl_text_input_manager_create_text_input(imcontext->text_input_manager);
- wl_text_input_add_listener(imcontext->text_input,
- &text_input_listener, imcontext);
+ if (imcontext->text_input)
+ wl_text_input_add_listener(imcontext->text_input,
+ &text_input_listener, imcontext);
}
EAPI void
@@ -585,7 +591,8 @@ wayland_im_context_del(Ecore_IMF_Context *ctx)
EINA_LOG_DOM_INFO(_ecore_imf_wayland_log_dom, "context_del");
- wl_text_input_destroy(imcontext->text_input);
+ if (imcontext->text_input)
+ wl_text_input_destroy(imcontext->text_input);
clear_preedit(imcontext);
}
@@ -598,7 +605,8 @@ wayland_im_context_reset(Ecore_IMF_Context *ctx)
commit_preedit(imcontext);
clear_preedit(imcontext);
- wl_text_input_reset(imcontext->text_input);
+ if (imcontext->text_input)
+ wl_text_input_reset(imcontext->text_input);
update_state(imcontext);
@@ -619,10 +627,13 @@ wayland_im_context_focus_in(Ecore_IMF_Context *ctx)
if (!input || !input->seat)
return;
- wl_text_input_show_input_panel(imcontext->text_input);
- wl_text_input_activate(imcontext->text_input,
- input->seat,
- ecore_wl_window_surface_get(imcontext->window));
+ if (imcontext->text_input)
+ {
+ wl_text_input_show_input_panel(imcontext->text_input);
+ wl_text_input_activate(imcontext->text_input,
+ input->seat,
+ ecore_wl_window_surface_get(imcontext->window));
+ }
}
EAPI void
@@ -634,8 +645,9 @@ wayland_im_context_focus_out(Ecore_IMF_Context *ctx)
if (!imcontext->window) return;
- wl_text_input_deactivate(imcontext->text_input,
- imcontext->window->display->input->seat);
+ if (imcontext->text_input)
+ wl_text_input_deactivate(imcontext->text_input,
+ imcontext->window->display->input->seat);
}
EAPI void
@@ -738,7 +750,8 @@ wayland_im_context_show(Ecore_IMF_Context *ctx)
EINA_LOG_DOM_INFO(_ecore_imf_wayland_log_dom, "context_show");
- wl_text_input_show_input_panel(imcontext->text_input);
+ if (imcontext->text_input)
+ wl_text_input_show_input_panel(imcontext->text_input);
}
EAPI void
@@ -748,7 +761,8 @@ wayland_im_context_hide(Ecore_IMF_Context *ctx)
EINA_LOG_DOM_INFO(_ecore_imf_wayland_log_dom, "context_hide");
- wl_text_input_hide_input_panel(imcontext->text_input);
+ if (imcontext->text_input)
+ wl_text_input_hide_input_panel(imcontext->text_input);
}
EAPI Eina_Bool
--
------------------------------------------------------------------------------
See everything from the browser to the database with AppDynamics
Get end-to-end visibility with application monitoring from AppDynamics
Isolate bottlenecks and diagnose root cause in seconds.
Start your free trial of AppDynamics Pro today!
http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk