LOCAL TBOOL fb_getimsg(WINDISPLAY *mod, WINWINDOW *win, TIMSG **msgptr, TUINT type) { struct TExecBase *TExecBase = TGetExecBase(mod); TIMSG *msg; TBOOL res = TFALSE; TLock(mod->fbd_Lock); msg = (TIMSG *) TRemHead(&mod->fbd_IMsgPool); if (msg == TNULL) msg = TAllocMsg0(sizeof(TIMSG)); if (msg) { msg->timsg_Instance = win; msg->timsg_UserData = win->fbv_UserData; msg->timsg_Type = type; msg->timsg_Qualifier = win->fbv_KeyQual; msg->timsg_MouseX = win->fbv_MouseX; msg->timsg_MouseY = win->fbv_MouseY; TGetSystemTime(&msg->timsg_TimeStamp); *msgptr = msg; res = TTRUE; } else *msgptr = TNULL; TUnlock(mod->fbd_Lock); return res; }
static TBOOL x11_getimsg(struct X11Display *mod, struct X11Window *v, TIMSG ** msgptr, TUINT type) { TAPTR TExecBase = TGetExecBase(mod); TIMSG *msg = (TIMSG *) TRemHead(&mod->x11_imsgpool); if (msg == TNULL) msg = TAllocMsg0(sizeof(TIMSG)); if (msg) { msg->timsg_Instance = v; msg->timsg_UserData = v->userdata; msg->timsg_Type = type; msg->timsg_Qualifier = mod->x11_KeyQual; msg->timsg_ScreenMouseX = mod->x11_ScreenMouseX; msg->timsg_ScreenMouseY = mod->x11_ScreenMouseY; msg->timsg_MouseX = v->mousex; msg->timsg_MouseY = v->mousey; TGetSystemTime(&msg->timsg_TimeStamp); *msgptr = msg; return TTRUE; } *msgptr = TNULL; return TFALSE; }
static TBOOL tek_lib_exec_sendtaskport(struct TTask *task, const char *portname, const char *buf, size_t len) { struct TExecBase *TExecBase = TGetExecBase(task); char atomname[256]; TAPTR atom; TBOOL success = TFALSE; sprintf(atomname, "msgport.%s.%p", portname, task); atom = TLockAtom(atomname, TATOMF_SHARED | TATOMF_NAME); if (atom) { TAPTR imsgport = (TAPTR) TGetAtomData(atom); if (imsgport) { TAPTR msg = TAllocMsg0(len); if (msg) { memcpy(msg, buf, len); TPutMsg(imsgport, TNULL, msg); success = TTRUE; } } TUnlockAtom(atom, TATOMF_KEEP); } return success; }
static TBOOL getusermsg(TEKVisual *vis, TIMSG **msgptr, TUINT type, TSIZE size) { TAPTR TExecBase = vis->vis_ExecBase; TIMSG *msg = TAllocMsg0(sizeof(TIMSG) + size); if (msg) { msg->timsg_ExtraSize = size; msg->timsg_Type = type; msg->timsg_Qualifier = 0; msg->timsg_MouseX = -1; msg->timsg_MouseY = -1; TGetSystemTime(&msg->timsg_TimeStamp); *msgptr = msg; return TTRUE; } *msgptr = TNULL; return TFALSE; }