Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(467)

Unified Diff: chrome/browser/chromeos/input_method/ibus_engine_controller.cc

Issue 8761018: Start the IME Daemon when adding an extension IME (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Pre-submit Created 9 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | chrome/browser/chromeos/input_method/input_method_manager.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/chromeos/input_method/ibus_engine_controller.cc
diff --git a/chrome/browser/chromeos/input_method/ibus_engine_controller.cc b/chrome/browser/chromeos/input_method/ibus_engine_controller.cc
index 6aaf2c9f10acdacc0fb76179e1358cfd8b546e20..b2eeb69a813628fa24dd5250c51ff1f9120c9e09 100644
--- a/chrome/browser/chromeos/input_method/ibus_engine_controller.cc
+++ b/chrome/browser/chromeos/input_method/ibus_engine_controller.cc
@@ -81,6 +81,10 @@ class IBusEngineControllerImpl : public IBusEngineController {
}
~IBusEngineControllerImpl() {
+ for (std::set<IBusChromeOSEngine*>::iterator ix = engine_instances_.begin();
+ ix != engine_instances_.end(); ++ix) {
+ (*ix)->connection = NULL;
+ }
if (preedit_text_) {
g_object_unref(preedit_text_);
preedit_text_ = NULL;
@@ -710,49 +714,61 @@ class IBusEngineControllerImpl : public IBusEngineController {
GDBusMethodInvocation* key_data) {
VLOG(1) << "OnProcessKeyEvent";
IBusChromeOSEngine* engine = IBUS_CHROMEOS_ENGINE(ibus_engine);
- engine->connection->observer_->OnKeyEvent(
- !(modifiers & IBUS_RELEASE_MASK),
- keyval, keycode,
- modifiers & IBUS_MOD1_MASK,
- modifiers & IBUS_CONTROL_MASK,
- modifiers & IBUS_SHIFT_MASK,
- reinterpret_cast<KeyEventHandle*>(key_data));
+ if (engine->connection) {
+ engine->connection->observer_->OnKeyEvent(
+ !(modifiers & IBUS_RELEASE_MASK),
+ keyval, keycode,
+ modifiers & IBUS_MOD1_MASK,
+ modifiers & IBUS_CONTROL_MASK,
+ modifiers & IBUS_SHIFT_MASK,
+ reinterpret_cast<KeyEventHandle*>(key_data));
+ }
}
static void OnReset(IBusEngine* ibus_engine) {
VLOG(1) << "OnReset";
IBusChromeOSEngine* engine = IBUS_CHROMEOS_ENGINE(ibus_engine);
- engine->connection->observer_->OnReset();
+ if (engine->connection) {
+ engine->connection->observer_->OnReset();
+ }
}
static void OnEnable(IBusEngine* ibus_engine) {
VLOG(1) << "OnEnable";
IBusChromeOSEngine* engine = IBUS_CHROMEOS_ENGINE(ibus_engine);
- engine->connection->active_engine_ = engine;
- engine->connection->observer_->OnEnable();
- engine->connection->SetProperties();
+ if (engine->connection) {
+ engine->connection->active_engine_ = engine;
+ engine->connection->observer_->OnEnable();
+ engine->connection->SetProperties();
+ }
}
static void OnDisable(IBusEngine* ibus_engine) {
VLOG(1) << "OnDisable";
IBusChromeOSEngine* engine = IBUS_CHROMEOS_ENGINE(ibus_engine);
- engine->connection->observer_->OnDisable();
- if (engine->connection->active_engine_ == engine) {
- engine->connection->active_engine_ = NULL;
+ if (engine->connection) {
+ engine->connection->observer_->OnDisable();
+ if (engine->connection->active_engine_ == engine) {
+ engine->connection->active_engine_ = NULL;
+ }
}
}
static void OnFocusIn(IBusEngine* ibus_engine) {
VLOG(1) << "OnFocusIn";
IBusChromeOSEngine* engine = IBUS_CHROMEOS_ENGINE(ibus_engine);
- engine->connection->observer_->OnFocusIn();
- engine->connection->SetProperties();
+ if (engine->connection) {
+ engine->connection->observer_->OnFocusIn();
+ engine->connection->SetProperties();
+ }
}
static void OnFocusOut(IBusEngine* ibus_engine) {
VLOG(1) << "OnFocusOut";
IBusChromeOSEngine* engine = IBUS_CHROMEOS_ENGINE(ibus_engine);
- engine->connection->observer_->OnFocusOut();
+ if (engine->connection) {
+ engine->connection->observer_->OnFocusOut();
+ }
}
static void OnPageUp(IBusEngine* ibus_engine) {
@@ -775,25 +791,29 @@ class IBusEngineControllerImpl : public IBusEngineController {
const gchar *prop_name, guint prop_state) {
VLOG(1) << "OnPropertyActivate";
IBusChromeOSEngine* engine = IBUS_CHROMEOS_ENGINE(ibus_engine);
- engine->connection->observer_->OnPropertyActivate(prop_name, prop_state);
+ if (engine->connection) {
+ engine->connection->observer_->OnPropertyActivate(prop_name, prop_state);
+ }
}
static void OnCandidateClicked(IBusEngine* ibus_engine, guint index,
guint button, guint state) {
VLOG(1) << "OnCandidateClicked";
IBusChromeOSEngine* engine = IBUS_CHROMEOS_ENGINE(ibus_engine);
- int pressed_button = 0;
- if (button & IBUS_BUTTON1_MASK) {
- pressed_button |= MOUSE_BUTTON_1_MASK;
- }
- if (button & IBUS_BUTTON2_MASK) {
- pressed_button |= MOUSE_BUTTON_2_MASK;
- }
- if (button & IBUS_BUTTON3_MASK) {
- pressed_button |= MOUSE_BUTTON_3_MASK;
+ if (engine->connection) {
+ int pressed_button = 0;
+ if (button & IBUS_BUTTON1_MASK) {
+ pressed_button |= MOUSE_BUTTON_1_MASK;
+ }
+ if (button & IBUS_BUTTON2_MASK) {
+ pressed_button |= MOUSE_BUTTON_2_MASK;
+ }
+ if (button & IBUS_BUTTON3_MASK) {
+ pressed_button |= MOUSE_BUTTON_3_MASK;
+ }
+ engine->connection->observer_->OnCandidateClicked(index, pressed_button,
+ state);
}
- engine->connection->observer_->OnCandidateClicked(index, pressed_button,
- state);
}
static GObject* EngineConstructor(GType type, guint n_construct_params,
@@ -805,6 +825,8 @@ class IBusEngineControllerImpl : public IBusEngineController {
ConnectionMap::iterator connection = g_connections_->find(name);
if (connection == g_connections_->end()) {
LOG(ERROR) << "Connection never created: " << name;
+ engine->connection = NULL;
+ engine->table = NULL;
return (GObject *) engine;
}
« no previous file with comments | « no previous file | chrome/browser/chromeos/input_method/input_method_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698