fix: assign one active engine owner
This commit is contained in:
12
ibus.c
12
ibus.c
@@ -32,6 +32,7 @@ static char addrfile[256];
|
||||
static int icctr;
|
||||
static int busctr;
|
||||
static Channel *replyc;
|
||||
static uvlong owner;
|
||||
|
||||
static DBusHandlerResult onmsg(DBusConnection*, DBusMessage*, void*);
|
||||
|
||||
@@ -212,6 +213,8 @@ sendkey(u32int ks, u32int mod, Keyres *res)
|
||||
{
|
||||
Keyreq kr;
|
||||
|
||||
kr.owner = owner;
|
||||
kr.op = Keypress;
|
||||
kr.ks = ks;
|
||||
kr.mod = mod;
|
||||
kr.want = 1;
|
||||
@@ -223,9 +226,15 @@ sendkey(u32int ks, u32int mod, Keyres *res)
|
||||
static void
|
||||
sendreset(void)
|
||||
{
|
||||
Keyreq kr;
|
||||
Keyres res;
|
||||
|
||||
sendkey(Kesc, 0, &res);
|
||||
memset(&kr, 0, sizeof kr);
|
||||
kr.owner = owner;
|
||||
kr.op = Keyreset;
|
||||
kr.reply = replyc;
|
||||
chansend(keyc, &kr);
|
||||
chanrecv(replyc, &res);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -561,6 +570,7 @@ ibusthread(void *_)
|
||||
if(ibusinit() < 0)
|
||||
return;
|
||||
replyc = chancreate(sizeof(Keyres), 0);
|
||||
owner = ownernew();
|
||||
for(;;){
|
||||
n = 0;
|
||||
for(i = 0; i < nwatches && n < Maxwatches; i++){
|
||||
|
||||
Reference in New Issue
Block a user