TMODENTRY TUINT tek_init_visual(struct TTask *task, struct TModule *vis, TUINT16 version, TTAGITEM *tags) { struct TVisualBase *mod = (struct TVisualBase *) vis; if (mod == TNULL) { if (version == 0xffff) return sizeof(TAPTR) * VISUAL_NUMVECTORS; if (version <= VISUAL_VERSION) return sizeof(struct TVisualBase); return 0; } for (;;) { struct TExecBase *TExecBase = TGetExecBase(mod); mod->vis_Lock = TCreateLock(TNULL); if (mod->vis_Lock == TNULL) break; mod->vis_Module.tmd_Version = VISUAL_VERSION; mod->vis_Module.tmd_Revision = VISUAL_REVISION; mod->vis_Module.tmd_Handle.thn_Hook.thk_Entry = vis_dispatch; mod->vis_Module.tmd_Flags = TMODF_VECTORTABLE | TMODF_OPENCLOSE; TInitVectors(&mod->vis_Module, vis_vectors, VISUAL_NUMVECTORS); return TTRUE; } vis_destroy(mod); return TFALSE; }
static TBOOL rfb_inittask(struct TTask *task) { TAPTR TExecBase = TGetExecBase(task); RFBDISPLAY *mod = TGetTaskData(task); for (;;) { TTAGITEM *opentags = mod->rfb_OpenTags; TSTRPTR subname; /* Initialize rectangle pool */ region_initpool(&mod->rfb_RectPool, TExecBase); /* list of free input messages: */ TInitList(&mod->rfb_IMsgPool); /* list of all open visuals: */ TInitList(&mod->rfb_VisualList); /* init fontmanager and default font */ TInitList(&mod->rfb_FontManager.openfonts); /* Instance lock (currently needed for async VNC) */ mod->rfb_InstanceLock = TCreateLock(TNULL); if (mod->rfb_InstanceLock == TNULL) break; /* Open sub device, if one is requested: */ subname = (TSTRPTR) TGetTag(opentags, TVisual_DriverName, (TTAG) SUBDEVICE_NAME); if (subname) { TTAGITEM subtags[2]; subtags[0].tti_Tag = TVisual_IMsgPort; subtags[0].tti_Value = TGetTag(opentags, TVisual_IMsgPort, TNULL); subtags[1].tti_Tag = TTAG_DONE; mod->rfb_RndRPort = TCreatePort(TNULL); if (mod->rfb_RndRPort == TNULL) break; mod->rfb_RndDevice = TOpenModule(subname, 0, subtags); if (mod->rfb_RndDevice == TNULL) break; mod->rfb_RndRequest = TAllocMsg(sizeof(struct TVRequest)); if (mod->rfb_RndRequest == TNULL) break; mod->rfb_RndIMsgPort = TCreatePort(TNULL); if (mod->rfb_RndIMsgPort == TNULL) break; } TDBPRINTF(TDB_TRACE,("Instance init successful\n")); return TTRUE; } rfb_exittask(mod); return TFALSE; }
TMODENTRY TUINT tek_init_display_rawfb(struct TTask *task, struct TModule *vis, TUINT16 version, TTAGITEM *tags) { RFBDISPLAY *mod = (RFBDISPLAY *) vis; if (mod == TNULL) { if (version == 0xffff) return sizeof(TAPTR) * RFB_DISPLAY_NUMVECTORS; if (version <= RFB_DISPLAY_VERSION) return sizeof(RFBDISPLAY); return 0; } for (;;) { TAPTR TExecBase = TGetExecBase(mod); if (FT_Init_FreeType(&mod->rfb_FTLibrary) != 0) break; if (FTC_Manager_New(mod->rfb_FTLibrary, 0, 0, 0, rfb_fontrequester, NULL, &mod->rfb_FTCManager) != 0) break; if (FTC_CMapCache_New(mod->rfb_FTCManager, &mod->rfb_FTCCMapCache) != 0) break; if (FTC_SBitCache_New(mod->rfb_FTCManager, &mod->rfb_FTCSBitCache) != 0) break; mod->rfb_ExecBase = TExecBase; mod->rfb_Lock = TCreateLock(TNULL); if (mod->rfb_Lock == TNULL) break; mod->rfb_Module.tmd_Version = RFB_DISPLAY_VERSION; mod->rfb_Module.tmd_Revision = RFB_DISPLAY_REVISION; mod->rfb_Module.tmd_Handle.thn_Hook.thk_Entry = rfb_dispatch; mod->rfb_Module.tmd_Flags = TMODF_VECTORTABLE | TMODF_OPENCLOSE; TInitVectors(&mod->rfb_Module, rfb_vectors, RFB_DISPLAY_NUMVECTORS); return TTRUE; } rfb_destroy(mod); return TFALSE; }
TMODENTRY TUINT tek_init_display_windows(TAPTR task, struct TModule *vis, TUINT16 version, TTAGITEM *tags) { WINDISPLAY *mod = (WINDISPLAY *) vis; if (mod == TNULL) { if (version == 0xffff) return sizeof(TAPTR) * FB_DISPLAY_NUMVECTORS; if (version <= FB_DISPLAY_VERSION) return sizeof(WINDISPLAY); return 0; } TDBPRINTF(TDB_TRACE,("Module init...\n")); for (;;) { struct TExecBase *TExecBase = TGetExecBase(mod); mod->fbd_ExecBase = TExecBase; mod->fbd_Lock = TCreateLock(TNULL); if (mod->fbd_Lock == TNULL) break; mod->fbd_Module.tmd_Version = FB_DISPLAY_VERSION; mod->fbd_Module.tmd_Revision = FB_DISPLAY_REVISION; mod->fbd_Module.tmd_Handle.thn_Hook.thk_Entry = fb_dispatch; mod->fbd_Module.tmd_Flags = TMODF_VECTORTABLE | TMODF_OPENCLOSE; TInitVectors(&mod->fbd_Module, fb_vectors, FB_DISPLAY_NUMVECTORS); return TTRUE; } fb_destroy(mod); return TFALSE; }
static TBOOL rfb_inittask(struct TTask *task) { TAPTR TExecBase = TGetExecBase(task); struct rfb_Display *mod = TGetTaskData(task); for (;;) { TTAGITEM *opentags = mod->rfb_OpenTags; TSTRPTR subname; /* Initialize rectangle pool */ region_initpool(&mod->rfb_RectPool, TExecBase); /* list of free input messages: */ TInitList(&mod->rfb_IMsgPool); /* list of all open visuals: */ TInitList(&mod->rfb_VisualList); /* init fontmanager and default font */ TInitList(&mod->rfb_FontManager.openfonts); region_init(&mod->rfb_RectPool, &mod->rfb_DirtyRegion, TNULL); mod->rfb_PixBuf.tpb_Format = TVPIXFMT_UNDEFINED; mod->rfb_DevWidth = RFB_DEF_WIDTH; mod->rfb_DevHeight = RFB_DEF_HEIGHT; mod->rfb_Flags = RFBFL_BUFFER_CAN_RESIZE; #if defined(ENABLE_LINUXFB) if (!rfb_linux_init(mod)) break; #endif /* Instance lock (currently needed for async VNC) */ mod->rfb_InstanceLock = TCreateLock(TNULL); if (mod->rfb_InstanceLock == TNULL) break; /* Open sub device, if one is requested: */ subname = (TSTRPTR) TGetTag(opentags, TVisual_DriverName, (TTAG) SUBDEVICE_NAME); if (subname) { TTAGITEM subtags[2]; subtags[0].tti_Tag = TVisual_IMsgPort; subtags[0].tti_Value = TGetTag(opentags, TVisual_IMsgPort, TNULL); subtags[1].tti_Tag = TTAG_DONE; mod->rfb_RndRPort = TCreatePort(TNULL); if (mod->rfb_RndRPort == TNULL) break; mod->rfb_RndDevice = TOpenModule(subname, 0, subtags); if (mod->rfb_RndDevice == TNULL) break; mod->rfb_RndRequest = TAllocMsg(sizeof(struct TVRequest)); if (mod->rfb_RndRequest == TNULL) break; mod->rfb_RndIMsgPort = TCreatePort(TNULL); if (mod->rfb_RndIMsgPort == TNULL) break; } TDBPRINTF(TDB_TRACE, ("Instance init successful\n")); return TTRUE; } rfb_exittask(mod); return TFALSE; }