cleanup: simplify frontend request ownership
This commit is contained in:
27
strans.c
27
strans.c
@@ -4,9 +4,7 @@
|
||||
static Im im;
|
||||
static int popup = 0;
|
||||
static int visible = 0;
|
||||
static Lock ownerlock;
|
||||
static uvlong ownerctr;
|
||||
static uvlong activeowner;
|
||||
static void *activeowner;
|
||||
static Caret caret;
|
||||
static void dictqmap(Im*);
|
||||
static void dictqjp(Im*);
|
||||
@@ -22,19 +20,6 @@ struct Search
|
||||
};
|
||||
static Search search;
|
||||
|
||||
uvlong
|
||||
ownernew(void)
|
||||
{
|
||||
uvlong n;
|
||||
|
||||
lock(&ownerlock);
|
||||
n = ++ownerctr;
|
||||
if(n == 0)
|
||||
n = ++ownerctr;
|
||||
unlock(&ownerlock);
|
||||
return n;
|
||||
}
|
||||
|
||||
Lang langs[] = {
|
||||
{LangEN, nil, nil, nil, nil, nil, nil, nil},
|
||||
{LangJP, "hira", "kanji", transmap, backjp, dictqjp, nil, nil},
|
||||
@@ -155,7 +140,7 @@ reset(void)
|
||||
show();
|
||||
}
|
||||
|
||||
void
|
||||
static void
|
||||
dictsend(Im *im, Str *key)
|
||||
{
|
||||
Dictreq old, req;
|
||||
@@ -792,7 +777,7 @@ init(void)
|
||||
im.l = getlang(LangEN);
|
||||
memset(&search, 0, sizeof search);
|
||||
memset(&caret, 0, sizeof caret);
|
||||
activeowner = 0;
|
||||
activeowner = nil;
|
||||
visible = 0;
|
||||
}
|
||||
|
||||
@@ -814,7 +799,7 @@ imhandlekey(Keyreq *kr)
|
||||
case Keyrelease:
|
||||
if(kr->owner == activeowner){
|
||||
reset();
|
||||
activeowner = 0;
|
||||
activeowner = nil;
|
||||
}
|
||||
break;
|
||||
case Keyreset:
|
||||
@@ -827,7 +812,7 @@ imhandlekey(Keyreq *kr)
|
||||
show();
|
||||
}
|
||||
break;
|
||||
default:
|
||||
case Keypress:
|
||||
res.eaten = 0;
|
||||
if(meaningful(kr)){
|
||||
if(kr->owner != activeowner){
|
||||
@@ -840,7 +825,7 @@ imhandlekey(Keyreq *kr)
|
||||
}
|
||||
break;
|
||||
}
|
||||
if(kr->want && kr->owner == activeowner){
|
||||
if(kr->owner == activeowner){
|
||||
if(search.lang)
|
||||
res.preedit = search.text;
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user