Aros/開發者/文件/庫/MUIMaster
外觀
所有muimaster庫在MUI_MakeObjectA()之後的偏移量都是錯誤的。MUI_MakeObjectA和MUI_Layout()之間應該有4個私有條目。注意:在MUI_Layout()之後,而不是MUI_MakeObjectA()之後,我這次眼瞎了:)(Bernd Roesch在2006年注意到了這一點,並沒有發生太多的事情)。你總是可以擁有多個.conf檔案,根據具體的埠使用它們,或者你可以修改構建過程,在解析它們之前預處理這些檔案,或者...
這破壞了所有本地m68k MUI自定義類(通常是透過破壞堆疊或在某些圖形庫區域例程中崩潰,難怪我的除錯嘗試毫無意義)
那麼,在不破壞所有現有埠的情況下,解決方案是什麼?只為m68k埠注入4個虛假條目?PPC埠也是一樣... 更好的是,為AROS預ABIv1新增一個ifdef。我認為.conf檔案不支援特定於埠的更改?(muimaster.conf在MUI_Layout之後需要4個空行)。
你可以在*.conf檔案中使用'#ifdef'嗎?!
另外,那些帶有偏移數字的AROS_LHx()宏怎麼辦?偏移數字本身可以是宏。至於.conf檔案,我不認為你可以(Staf?),但你可以用正常的預處理器預處理它們(再次,Staf?:) 不,但是你可以指定build_module的conffile選項。你應該能夠在mmakefile.src中做類似的事情(未經測試)。
ifeq($(AROS_TARGET_CPU), m68k)
CONFFILE := muimaster_m68k.conf
else
CONFFILE := muimaster.conf
endif
%build_module ...\
conffile=$(CONFFILE)
Or this ;-)
ifeq($(AROS_TARGET_CPU), i386)
CONFFILE := muimaster_i386.conf
else
CONFFILE := muimaster.conf
endif
Object* MUI_NewObjectA(ClassID classid, struct TagItem* tags) (A0, A1) void MUI_DisposeObject(Object* obj) (A0) LONG MUI_RequestA(APTR app, APTR win, LONGBITS flags, CONST_STRPTR title, CONST_STRPTR gadgets, CONST_STRPTR format, APTR params) (D0, D1, D2, A0, A1, A2, A3) APTR MUI_AllocAslRequest(unsigned long reqType, struct TagItem* tagList) (D0, A0) BOOL MUI_AslRequest(APTR requester, struct TagItem* tagList) (A0, A1) void MUI_FreeAslRequest(APTR requester) (A0) LONG MUI_Error() () LONG MUI_SetError(LONG num) (D0) struct IClass* MUI_GetClass(ClassID classid) (A0) void MUI_FreeClass(Class* cl) (A0) void MUI_RequestIDCMP(Object* obj, ULONG flags) (A0, D0) void MUI_RejectIDCMP(Object* obj, ULONG flags) (A0, D0) void MUI_Redraw(Object* obj, ULONG flags) (A0, D0) struct MUI_CustomClass* MUI_CreateCustomClass(struct Library* base, ClassID supername, struct MUI_CustomClass* supermcc, ULONG datasize, APTR dispatcher) (A0, A1, A2, D0, A3) BOOL MUI_DeleteCustomClass(struct MUI_CustomClass* mcc) (A0) Object* MUI_MakeObjectA(LONG type, IPTR* params) (D0, A0) BOOL MUI_Layout(Object* obj, LONG left, LONG top, LONG width, LONG height, ULONG flags) (A0, D0, D1, D2, D3, D4) LONG MUI_ObtainPen(struct MUI_RenderInfo* mri, struct MUI_PenSpec* spec, ULONG flags) (A0, A1, D0) void MUI_ReleasePen(struct MUI_RenderInfo* mri, LONG pen) (A0, D0) APTR MUI_AddClipping(struct MUI_RenderInfo* mri, WORD left, WORD top, WORD width, WORD height) (A0, D0, D1, D2, D3) void MUI_RemoveClipping(struct MUI_RenderInfo* mri, APTR handle) (A0, A1) APTR MUI_AddClipRegion(struct MUI_RenderInfo* mri, struct Region* r) (A0, A1) void MUI_RemoveClipRegion(struct MUI_RenderInfo* mri, APTR handle) (A0, A1) BOOL MUI_BeginRefresh(struct MUI_RenderInfo* mri, ULONG flags) (A0, D0) void MUI_EndRefresh(struct MUI_RenderInfo* mri, ULONG flags) (A0, D0)