summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Young <chris@unsatisfactorysoftware.co.uk>2009-04-14 18:51:10 +0000
committerChris Young <chris@unsatisfactorysoftware.co.uk>2009-04-14 18:51:10 +0000
commit9f4851d288207aa711a6d4b8f54d307084da85c8 (patch)
treed05f5edf8020add784cbf6f4dabe869da4e6c170
parentb3e904058e90595047f6718e2a3712dd4518a4ad (diff)
downloadnetsurf-9f4851d288207aa711a6d4b8f54d307084da85c8.tar.gz
netsurf-9f4851d288207aa711a6d4b8f54d307084da85c8.tar.bz2
Fix ARexx download queue - GummiSurf now works, and manual ARexx-initiated downloads
will be processed in turn rather than simultaneously. svn path=/trunk/netsurf/; revision=7075
-rwxr-xr-xamiga/arexx.c2
-rw-r--r--amiga/download.c10
-rwxr-xr-xamiga/gui.c2
3 files changed, 5 insertions, 9 deletions
diff --git a/amiga/arexx.c b/amiga/arexx.c
index bfa1e4253..e9329d1ec 100755
--- a/amiga/arexx.c
+++ b/amiga/arexx.c
@@ -115,6 +115,8 @@ STATIC VOID rx_open(struct ARexxCmd *cmd, struct RexxMsg *rxm __attribute__((unu
if(cmd->ac_ArgList[2])
{
+ if(!curbw) return;
+
dln = AllocVec(sizeof(struct dlnode),MEMF_PRIVATE | MEMF_CLEAR);
dln->filename = strdup((char *)cmd->ac_ArgList[2]);
dln->node.ln_Name = strdup((char *)cmd->ac_ArgList[0]);
diff --git a/amiga/download.c b/amiga/download.c
index 10b66cba5..bd4f05a5e 100644
--- a/amiga/download.c
+++ b/amiga/download.c
@@ -56,13 +56,11 @@ struct gui_download_window *gui_download_window_create(const char *url,
struct gui_download_window *dw;
APTR va[3];
- DebugPrintF("%s\n%lx\n",url,gui);
+ dw = AllocVec(sizeof(struct gui_download_window),MEMF_PRIVATE | MEMF_CLEAR);
if((!IsListEmpty(&gui->dllist)) && (dw->dln = (struct dlnode *)FindName(&gui->dllist,url)))
{
- DebugPrintF("%lx node\n",dw->dln);
strcpy(fname,dw->dln->filename);
- DebugPrintF("%s fname\n",dw->dln->filename);
free(dw->dln->node.ln_Name);
dw->dln->node.ln_Name = NULL;
}
@@ -80,8 +78,6 @@ struct gui_download_window *gui_download_window_create(const char *url,
else return NULL;
}
- dw = AllocVec(sizeof(struct gui_download_window),MEMF_PRIVATE | MEMF_CLEAR);
-
dw->size = total_size;
dw->downloaded = 0;
dw->bw = gui->shared->bw;
@@ -132,7 +128,6 @@ struct gui_download_window *gui_download_window_create(const char *url,
dw->node = AddObject(window_list,AMINS_DLWINDOW);
dw->node->objstruct = dw;
-
return dw;
}
@@ -188,7 +183,7 @@ void gui_download_window_done(struct gui_download_window *dw)
if(dln = dw->dln)
{
dln2 = (struct dlnode *)GetSucc((struct Node *)dln);
- if(dln != dln2) queuedl = true;
+ if((dln!=dln2) && (dln2)) queuedl = true;
free(dln->filename);
Remove((struct Node *)dln);
@@ -198,7 +193,6 @@ void gui_download_window_done(struct gui_download_window *dw)
FClose(dw->fh);
DisposeObject(dw->objects[OID_MAIN]);
DelObject(dw->node);
-
if(queuedl) browser_window_download(bw,dln2->node.ln_Name,NULL);
}
diff --git a/amiga/gui.c b/amiga/gui.c
index 216bd0ef6..caf7fb784 100755
--- a/amiga/gui.c
+++ b/amiga/gui.c
@@ -1109,7 +1109,7 @@ void ami_handle_msg(void)
break;
case WMHI_ACTIVE:
- curbw = gwin->bw;
+ if(gwin->bw) curbw = gwin->bw;
break;
case WMHI_INTUITICK: