diff --git a/headers/private/input/InputServerTypes.h b/headers/private/input/InputServerTypes.h index 55b3526b8a..d7f69716e2 100644 --- a/headers/private/input/InputServerTypes.h +++ b/headers/private/input/InputServerTypes.h @@ -39,6 +39,8 @@ #define IS_CONTROL_DEVICES 'Icnd' #define SYSTEM_SHUTTING_DOWN 'SSDn' +#define IS_SAVE_SETTINGS 'Isst' + // app_server communication #define IS_ACQUIRE_INPUT 'Iaqi' #define IS_RELEASE_INPUT 'Irli' diff --git a/src/servers/input/InputServer.cpp b/src/servers/input/InputServer.cpp index 2ca58383b3..4cc105112d 100644 --- a/src/servers/input/InputServer.cpp +++ b/src/servers/input/InputServer.cpp @@ -572,6 +572,11 @@ InputServer::MessageReceived(BMessage* message) fAddOnManager->PostMessage(message); return; + case IS_SAVE_SETTINGS: + fKeyboardSettings.Save(); + fMouseSettings.SaveSettings(); + return; + case B_SOME_APP_LAUNCHED: { const char *signature; @@ -613,6 +618,7 @@ InputServer::HandleGetSetMouseType(BMessage* message, BMessage* reply) int32 type; if (message->FindInt32("mouse_type", &type) == B_OK) { fMouseSettings.SetMouseType(type); + be_app_messenger.SendMessage(IS_SAVE_SETTINGS); BMessage msg(IS_CONTROL_DEVICES); msg.AddInt32("type", B_POINTING_DEVICE); @@ -631,6 +637,7 @@ InputServer::HandleGetSetMouseAcceleration(BMessage* message, int32 factor; if (message->FindInt32("speed", &factor) == B_OK) { fMouseSettings.SetAccelerationFactor(factor); + be_app_messenger.SendMessage(IS_SAVE_SETTINGS); BMessage msg(IS_CONTROL_DEVICES); msg.AddInt32("type", B_POINTING_DEVICE); @@ -648,6 +655,7 @@ InputServer::HandleGetSetKeyRepeatDelay(BMessage* message, BMessage* reply) bigtime_t delay; if (message->FindInt64("delay", &delay) == B_OK) { fKeyboardSettings.SetKeyboardRepeatDelay(delay); + be_app_messenger.SendMessage(IS_SAVE_SETTINGS); BMessage msg(IS_CONTROL_DEVICES); msg.AddInt32("type", B_KEYBOARD_DEVICE); @@ -752,6 +760,7 @@ InputServer::HandleGetSetMouseSpeed(BMessage* message, BMessage* reply) int32 speed; if (message->FindInt32("speed", &speed) == B_OK) { fMouseSettings.SetMouseSpeed(speed); + be_app_messenger.SendMessage(IS_SAVE_SETTINGS); BMessage msg(IS_CONTROL_DEVICES); msg.AddInt32("type", B_POINTING_DEVICE); @@ -796,6 +805,7 @@ InputServer::HandleGetSetMouseMap(BMessage* message, BMessage* reply) ssize_t size; if (message->FindData("mousemap", B_RAW_TYPE, (const void**)&map, &size) == B_OK) { fMouseSettings.SetMapping(*map); + be_app_messenger.SendMessage(IS_SAVE_SETTINGS); BMessage msg(IS_CONTROL_DEVICES); msg.AddInt32("type", B_POINTING_DEVICE); @@ -822,6 +832,7 @@ InputServer::HandleGetSetClickSpeed(BMessage* message, BMessage* reply) bigtime_t clickSpeed; if (message->FindInt64("speed", &clickSpeed) == B_OK) { fMouseSettings.SetClickSpeed(clickSpeed); + be_app_messenger.SendMessage(IS_SAVE_SETTINGS); BMessage msg(IS_CONTROL_DEVICES); msg.AddInt32("type", B_POINTING_DEVICE); @@ -839,6 +850,7 @@ InputServer::HandleGetSetKeyRepeatRate(BMessage* message, BMessage* reply) int32 keyRepeatRate; if (message->FindInt32("rate", &keyRepeatRate) == B_OK) { fKeyboardSettings.SetKeyboardRepeatRate(keyRepeatRate); + be_app_messenger.SendMessage(IS_SAVE_SETTINGS); BMessage msg(IS_CONTROL_DEVICES); msg.AddInt32("type", B_KEYBOARD_DEVICE); diff --git a/src/servers/input/KeyboardSettings.h b/src/servers/input/KeyboardSettings.h index b7c54980f3..e67548c2cf 100644 --- a/src/servers/input/KeyboardSettings.h +++ b/src/servers/input/KeyboardSettings.h @@ -26,8 +26,7 @@ public : int32 KeyboardRepeatRate() const { return fSettings.key_repeat_rate; } bigtime_t KeyboardRepeatDelay() const { return fSettings.key_repeat_delay; } -private: - void Save(); + void Save(); private: kb_settings fSettings; diff --git a/src/servers/input/MouseSettings.h b/src/servers/input/MouseSettings.h index 7d508b5eeb..309b9dbb89 100644 --- a/src/servers/input/MouseSettings.h +++ b/src/servers/input/MouseSettings.h @@ -51,10 +51,11 @@ class MouseSettings { mode_mouse MouseMode() const { return fMode; } void SetMouseMode(mode_mouse mode); + status_t SaveSettings(); + private: static status_t GetSettingsPath(BPath &path); void RetrieveSettings(); - status_t SaveSettings(); mouse_settings fSettings, fOriginalSettings; mode_mouse fMode, fOriginalMode;