summaryrefslogtreecommitdiff
path: root/amiga/gui.c
diff options
context:
space:
mode:
Diffstat (limited to 'amiga/gui.c')
-rwxr-xr-xamiga/gui.c23
1 files changed, 15 insertions, 8 deletions
diff --git a/amiga/gui.c b/amiga/gui.c
index 6fc8a2991..d77210541 100755
--- a/amiga/gui.c
+++ b/amiga/gui.c
@@ -603,7 +603,7 @@ void ami_openscreen(void)
if(screenmodereq = AllocAslRequest(ASL_ScreenModeRequest,NULL))
{
if(AslRequestTags(screenmodereq,
- ASLSM_MinDepth,16,
+ ASLSM_MinDepth,0,
ASLSM_MaxDepth,32,
TAG_DONE))
{
@@ -2209,6 +2209,7 @@ void ami_switch_tab(struct gui_window_2 *gwin,bool redraw)
return;
}
+ ami_plot_release_pens(&gwin->shared_pens);
ami_update_buttons(gwin);
ami_menu_update_disabled(gwin->bw->window, gwin->bw->current_content);
@@ -2574,6 +2575,8 @@ struct gui_window *gui_create_browser_window(struct browser_window *bw,
return NULL;
}
+ NewMinList(&g->shared->shared_pens);
+
g->shared->scrollerhook.h_Entry = (void *)ami_scroller_hook;
g->shared->scrollerhook.h_Data = g->shared;
@@ -3182,12 +3185,14 @@ void gui_window_destroy(struct gui_window *g)
return;
}
+ ami_plot_release_pens(&g->shared->shared_pens);
+
DisposeObject(g->shared->objects[OID_MAIN]);
ami_gui_appicon_remove(g->shared);
if(g->shared->appwin) RemoveAppWindow(g->shared->appwin);
/* These aren't freed by the above.
- * TODO: nav_west etc need freeing too */
+ * TODO: nav_west etc need freeing too? */
DisposeObject(g->shared->objects[GID_ADDTAB_BM]);
DisposeObject(g->shared->objects[GID_CLOSETAB_BM]);
DisposeObject(g->shared->objects[GID_TABS_FLAG]);
@@ -3280,6 +3285,8 @@ void ami_do_redraw_tiled(struct gui_window_2 *gwin,
int tile_x_scale = (int)(nsoption_int(redraw_tile_size_x) / gwin->bw->scale);
int tile_y_scale = (int)(nsoption_int(redraw_tile_size_y) / gwin->bw->scale);
+ browserglob.shared_pens = &gwin->shared_pens;
+
if(top < 0) {
height += top;
top = 0;
@@ -3308,7 +3315,7 @@ void ami_do_redraw_tiled(struct gui_window_2 *gwin,
if(width <= 0) return;
if(height <= 0) return;
-//printf("%ld %ld %ld %ld\n",left, top, width, height);
+// printf("%ld %ld %ld %ld\n",left, top, width, height);
for(y = top; y < (top + height); y += tile_y_scale) {
clip.y0 = 0;
@@ -3470,14 +3477,14 @@ void ami_do_redraw(struct gui_window_2 *g)
g->bw->window->c_h = g->bw->window->c_h_temp;
- if(vcurrent>oldv)
+ if(vcurrent>oldv) /* Going down */
{
ami_do_redraw_limits(g->bw->window, g->bw,
hcurrent, (height / g->bw->scale) + oldv - 1,
hcurrent + (width / g->bw->scale),
vcurrent + (height / g->bw->scale) + 1);
}
- else if(vcurrent<oldv)
+ else if(vcurrent<oldv) /* Going up */
{
ami_do_redraw_limits(g->bw->window, g->bw,
hcurrent, vcurrent,
@@ -3485,14 +3492,14 @@ void ami_do_redraw(struct gui_window_2 *g)
oldv);
}
- if(hcurrent>oldh)
+ if(hcurrent>oldh) /* Going right */
{
ami_do_redraw_limits(g->bw->window, g->bw,
(width / g->bw->scale) + oldh , vcurrent,
hcurrent + (width / g->bw->scale),
vcurrent + (height / g->bw->scale));
}
- else if(hcurrent<oldh)
+ else if(hcurrent<oldh) /* Going left */
{
ami_do_redraw_limits(g->bw->window, g->bw,
hcurrent, vcurrent,
@@ -3997,7 +4004,7 @@ void gui_window_new_content(struct gui_window *g)
g->shared->oldh = 0;
g->shared->oldv = 0;
g->favicon = NULL;
-
+ ami_plot_release_pens(&g->shared->shared_pens);
ami_menu_update_disabled(g, c);
}