LOCAL void fb_setinput(WINDISPLAY *mod, struct TVRequest *req) { WINWINDOW *v = req->tvr_Op.SetInput.Window; req->tvr_Op.SetInput.OldMask = v->fbv_InputMask; v->fbv_InputMask = req->tvr_Op.SetInput.Mask; TDBPRINTF(TDB_TRACE,("Setinputmask: %08x\n", v->fbv_InputMask)); /* spool out possible remaining messages: */ fb_sendimessages(mod, TFALSE); }
LOCAL void fb_setinput(WINDISPLAY *mod, struct TVRequest *req) { WINWINDOW *v = req->tvr_Op.SetInput.Window; TUINT oldmask = v->fbv_InputMask; TUINT newmask = req->tvr_Op.SetInput.Mask; if (oldmask & TITYPE_INTERVAL) --mod->fbd_NumInterval; if (newmask & TITYPE_INTERVAL) ++mod->fbd_NumInterval; req->tvr_Op.SetInput.OldMask = oldmask; v->fbv_InputMask = newmask; TDBPRINTF(TDB_TRACE,("Setinputmask: %08x\n", v->fbv_InputMask)); /* spool out possible remaining messages: */ fb_sendimessages(mod); }
static void fb_runinstance(TAPTR task) { struct TExecBase *TExecBase = TGetExecBase(task); WINDISPLAY *mod = TGetTaskData(task); struct TVRequest *req; TUINT sig; /* interval time: 1/50s: */ TTIME intt = { 20000 }; /* next absolute time to send interval message: */ TTIME nextt; TTIME waitt, nowt; TGetSystemTime(&nextt); TAddTime(&nextt, &intt); TDBPRINTF(TDB_INFO,("Device instance running\n")); do { TBOOL do_interval = TFALSE; while ((req = TGetMsg(mod->fbd_CmdPort))) { fb_docmd(mod, req); TReplyMsg(req); } fb_notifywindows(mod); /* calculate new delta to wait: */ TGetSystemTime(&nowt); waitt = nextt; TSubTime(&waitt, &nowt); TWaitTime(&waitt, mod->fbd_CmdPortSignal); /* check if time interval has expired: */ TGetSystemTime(&nowt); if (TCmpTime(&nowt, &nextt) > 0) { /* expired; send interval: */ do_interval = TTRUE; TAddTime(&nextt, &intt); if (TCmpTime(&nowt, &nextt) >= 0) { /* nexttime expired already; create new time from now: */ nextt = nowt; TAddTime(&nextt, &intt); } } /* send out input messages: */ fb_sendimessages(mod, do_interval); /* get signal state: */ sig = TSetSignal(0, TTASK_SIG_ABORT); } while (!(sig & TTASK_SIG_ABORT)); TDBPRINTF(TDB_INFO,("Device instance closedown\n")); fb_exitinstance(mod); }