From 4893a9f9af8013fb81cdb81a4d49043719d0b851 Mon Sep 17 00:00:00 2001 From: Chris Young Date: Sat, 31 Dec 2016 00:11:06 +0000 Subject: Update download window to use event callbacks --- frontends/amiga/download.c | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) (limited to 'frontends/amiga/download.c') diff --git a/frontends/amiga/download.c b/frontends/amiga/download.c index 3eba8935c..47485e0da 100644 --- a/frontends/amiga/download.c +++ b/frontends/amiga/download.c @@ -69,7 +69,7 @@ #include "amiga/utf8.h" struct gui_download_window { - struct nsObject *node; + struct ami_generic_window w; struct Window *win; Object *objects[GID_LAST]; BPTR fh; @@ -89,6 +89,14 @@ enum { AMINS_DLOAD_ABORT, }; +static void ami_download_window_abort(void *w); +static BOOL ami_download_window_event(void *w); + +static const struct ami_win_event_table ami_download_table = { + ami_download_window_event, + ami_download_window_abort, +}; + static int downloads_in_progress = 0; static struct gui_download_window *gui_download_window_create(download_context *ctx, @@ -190,8 +198,7 @@ static struct gui_download_window *gui_download_window_create(download_context * dw->win = (struct Window *)RA_OpenWindow(dw->objects[OID_MAIN]); dw->ctx = ctx; - dw->node = AddObject(window_list,AMINS_DLWINDOW); - dw->node->objstruct = dw; + ami_gui_win_list_add(dw, AMINS_DLWINDOW, &ami_download_table); downloads_in_progress++; @@ -269,7 +276,7 @@ static void gui_download_window_done(struct gui_download_window *dw) downloads_in_progress--; DisposeObject(dw->objects[OID_MAIN]); - DelObject(dw->node); + ami_gui_win_list_remove(dw); if(queuedl) { nsurl *url; if (nsurl_create(dln2->node.ln_Name, &url) != NSERROR_OK) { @@ -296,16 +303,18 @@ static void gui_download_window_error(struct gui_download_window *dw, gui_download_window_done(dw); } -void ami_download_window_abort(struct gui_download_window *dw) +static void ami_download_window_abort(void *w) { + struct gui_download_window *dw = (struct gui_download_window *)dw; download_context_abort(dw->ctx); dw->result = AMINS_DLOAD_ABORT; gui_download_window_done(dw); } -BOOL ami_download_window_event(struct gui_download_window *dw) +static BOOL ami_download_window_event(void *w) { /* return TRUE if window destroyed */ + struct gui_download_window *dw = (struct gui_download_window *)w; ULONG result; uint16 code; -- cgit v1.2.3