when no input method is found but the replicant was loaded, we now unload it

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25330 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Jérôme Duval 2008-05-06 21:18:31 +00:00
parent 3b41ad8606
commit f27f494cb2
2 changed files with 14 additions and 0 deletions

View File

@ -476,6 +476,13 @@ AddOnManager::RegisterMethod(BInputServerMethod* method, const entry_ref& ref,
}
void
AddOnManager::UnloadReplicant()
{
BDeskbar().RemoveItem(REPLICANT_CTL_NAME);
}
void
AddOnManager::LoadReplicant()
{
@ -756,6 +763,12 @@ status_t
AddOnManager::HandleMethodReplicant(BMessage* message, BMessage* reply)
{
CALLED();
if (InputServer::gInputMethodList.CountItems() == 0) {
UnloadReplicant();
return B_OK;
}
LoadReplicant();
BAutolock lock(InputServer::gInputMethodListLocker);

View File

@ -51,6 +51,7 @@ class AddOnManager : public BLooper {
status_t HandleNodeMonitor(BMessage*);
void LoadReplicant();
void UnloadReplicant();
int32 GetReplicantAt(BMessenger target, int32 index) const;
status_t GetReplicantName(BMessenger target, int32 uid, BMessage *reply) const;
status_t GetReplicantView(BMessenger target, int32 uid, BMessage *reply) const;