X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Usermode%2FApplications%2Faxwin3_src%2FWM%2Frenderers%2Frichtext.c;h=8f69c9ca7eca1c78910c112c69cdab8e39fc4aac;hb=6457e97e47fa29a23975daf853a3c032ce6650ef;hp=c62dd7f525822dabdc1ff5c5e5272bb639c91368;hpb=be5123fe1f4aa66b76ce8ef589362ad21b6bbf72;p=tpg%2Facess2.git diff --git a/Usermode/Applications/axwin3_src/WM/renderers/richtext.c b/Usermode/Applications/axwin3_src/WM/renderers/richtext.c index c62dd7f5..8f69c9ca 100644 --- a/Usermode/Applications/axwin3_src/WM/renderers/richtext.c +++ b/Usermode/Applications/axwin3_src/WM/renderers/richtext.c @@ -43,6 +43,7 @@ typedef struct sRichText_Window // === PROTOTYPES === int Renderer_RichText_Init(void); tWindow *Renderer_RichText_Create(int Flags); +void Renderer_RichText_Destroy(tWindow *Window); void Renderer_RichText_Redraw(tWindow *Window); int Renderer_RichText_HandleIPC_SetAttr(tWindow *Window, size_t Len, const void *Data); int Renderer_RichText_HandleIPC_WriteLine(tWindow *Window, size_t Len, const void *Data); @@ -52,6 +53,7 @@ void Renderer_RichText_Redraw(tWindow *Window); tWMRenderer gRenderer_RichText = { .Name = "RichText", .CreateWindow = Renderer_RichText_Create, + .DestroyWindow = Renderer_RichText_Destroy, .Redraw = Renderer_RichText_Redraw, .HandleMessage = Renderer_RichText_HandleMessage, .nIPCHandlers = N_IPC_RICHTEXT, @@ -83,6 +85,23 @@ tWindow *Renderer_RichText_Create(int Flags) return ret; } +void Renderer_RichText_Destroy(tWindow *Window) +{ + tRichText_Window *info = Window->RendererInfo; + + // TODO: Is locking needed? WM_Destroy should have taken us off the render tree + while( info->FirstLine ) + { + tRichText_Line *line = info->FirstLine; + info->FirstLine = line->Next; + + free(line); + } + + if( info->Font ) + _SysDebug("RichText_Destroy - TODO: Free font"); +} + static inline int Renderer_RichText_RenderText_Act(tWindow *Window, tRichText_Window *info, int X, int Row, const char *Text, int Bytes, tColour FG, tColour BG, int Flags) { int rwidth;