diff options
-rw-r--r-- | amiga/Makefile.target | 2 | ||||
-rwxr-xr-x | amiga/gui.c | 66 | ||||
-rw-r--r-- | amiga/options.h | 3 |
3 files changed, 66 insertions, 5 deletions
diff --git a/amiga/Makefile.target b/amiga/Makefile.target index cf3c6a9e3..aa0cef61f 100644 --- a/amiga/Makefile.target +++ b/amiga/Makefile.target @@ -5,7 +5,7 @@ CFLAGS += -std=c99 -I . -Dnsamiga ifneq ($(SUBTARGET),os3) - CFLAGS += -N -U__STRICT_ANSI__ -D__USE_INLINE__ -D__USE_BASETYPE__ + CFLAGS += -U__STRICT_ANSI__ -D__USE_INLINE__ -D__USE_BASETYPE__ endif NETSURF_FEATURE_ROSPRITE_CFLAGS := -DWITH_NSSPRITE diff --git a/amiga/gui.c b/amiga/gui.c index b21853acb..ef013fe41 100755 --- a/amiga/gui.c +++ b/amiga/gui.c @@ -16,6 +16,9 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ +/* define this to use simple (as opposed to smart) refresh windows */ +#undef AMI_SIMPLEREFRESH + /* NetSurf core includes */ #include "content/urldb.h" #include "css/utils.h" @@ -563,6 +566,12 @@ void gui_init(int argc, char** argv) void ami_openscreen(void) { ULONG id = 0; + ULONG compositing; + + if(option_screen_compositing == -1) + compositing = ~0UL; + else compositing = option_screen_compositing; + if(!option_use_pubscreen || option_use_pubscreen[0] == '\0') { if((option_modeid) && (strncmp(option_modeid,"0x",2) == 0)) @@ -595,6 +604,7 @@ void ami_openscreen(void) SA_Type, PUBLICSCREEN, SA_PubName, "NetSurf", SA_LikeWorkbench, TRUE, + SA_Compositing, compositing, TAG_DONE); if(scrn) @@ -2527,7 +2537,6 @@ struct gui_window *gui_create_browser_window(struct browser_window *bw, gwin->shared->search_ico_hook.h_Entry = (void *)ami_set_search_ico_render_hook; gwin->shared->search_ico_hook.h_Data = gwin->shared; - if(!option_kiosk_mode) { ULONG addtabclosegadget = TAG_IGNORE; @@ -2659,13 +2668,18 @@ struct gui_window *gui_create_browser_window(struct browser_window *bw, IDCMP_MOUSEBUTTONS | IDCMP_NEWSIZE | IDCMP_RAWKEY | IDCMP_SIZEVERIFY | IDCMP_GADGETUP | IDCMP_IDCMPUPDATE | - IDCMP_ACTIVEWINDOW | // IDCMP_INTUITICKS | - IDCMP_EXTENDEDMOUSE, +#ifdef AMI_SIMPLEREFRESH + IDCMP_REFRESHWINDOW | +#endif + IDCMP_ACTIVEWINDOW | IDCMP_EXTENDEDMOUSE, WINDOW_IconifyGadget, iconifygadget, WINDOW_NewMenu, gwin->shared->menu, WINDOW_VertProp,1, WINDOW_IDCMPHook,&gwin->shared->scrollerhook, - WINDOW_IDCMPHookBits,IDCMP_IDCMPUPDATE | + WINDOW_IDCMPHookBits, IDCMP_IDCMPUPDATE | +#ifdef AMI_SIMPLEREFRESH + IDCMP_REFRESHWINDOW | +#endif IDCMP_EXTENDEDMOUSE | IDCMP_SIZEVERIFY, WINDOW_AppPort, appport, WINDOW_AppWindow,TRUE, @@ -3485,6 +3499,43 @@ void ami_do_redraw(struct gui_window_2 *g) g->new_content = false; } +#if AMI_SIMPLEREFRESH +// simplerefresh only + +void ami_refresh_window(struct gui_window_2 *gwin) +{ + struct IBox *bbox; + int x0, x1, y0, y1; + + GetAttr(SPACE_AreaBox, (Object *)gwin->objects[GID_BROWSER], (ULONG *)&bbox); + + BeginRefresh(gwin->win); + +// probably need to trawl through struct Region *DamageList + x0 = gwin->win->RPort->Layer->bounds.MinX; + x1 = gwin->win->RPort->Layer->bounds.MaxX; + y0 = gwin->win->RPort->Layer->bounds.MinY; + y1 = gwin->win->RPort->Layer->bounds.MaxY; + + ami_do_redraw_limits(gwin->bw->window, gwin->bw, x0, y0, x1, y1); + +/* quick refresh - scuppered by shared offscreen bitmap + BltBitMapTags(BLITA_SrcType, BLITT_BITMAP, + BLITA_Source, browserglob.bm, + BLITA_SrcX, 0, + BLITA_SrcY, 0, + BLITA_DestType, BLITT_RASTPORT, + BLITA_Dest, gwin->win->RPort, + BLITA_DestX, bbox->Left, + BLITA_DestY, bbox->Top, + BLITA_Width, bbox->Width, + BLITA_Height, bbox->Height, + TAG_DONE); +*/ + EndRefresh(gwin->win, TRUE); +} +#endif + void ami_get_hscroll_pos(struct gui_window_2 *gwin, ULONG *xs) { if(gwin->objects[GID_HSCROLL]) @@ -3950,6 +4001,13 @@ void ami_scroller_hook(struct Hook *hook,Object *object,struct IntuiMessage *msg case IDCMP_SIZEVERIFY: break; + +#if AMI_SIMPLEREFRESH + case IDCMP_REFRESHWINDOW: +printf("refreshing\n"); + ami_refresh_window(gwin); + break; +#endif } // ReplyMsg((struct Message *)msg); } diff --git a/amiga/options.h b/amiga/options.h index bf4f1f24b..b00838e69 100644 --- a/amiga/options.h +++ b/amiga/options.h @@ -24,6 +24,7 @@ extern char *option_url_file; extern char *option_hotlist_file; extern char *option_use_pubscreen; extern char *option_modeid; +extern int option_screen_compositing; extern int option_cache_bitmaps; extern char *option_theme; extern bool option_utf8_clipboard; @@ -74,6 +75,7 @@ char *option_url_file = 0; \ char *option_hotlist_file = 0; \ char *option_use_pubscreen = 0; \ char *option_modeid = 0; \ +extern int option_screen_compositing = -1; \ int option_cache_bitmaps = 0; \ char *option_theme = 0; \ bool option_utf8_clipboard = false; \ @@ -124,6 +126,7 @@ int option_menu_refresh = 0; \ { "hotlist_file", OPTION_STRING, &option_hotlist_file }, \ { "use_pubscreen", OPTION_STRING, &option_use_pubscreen}, \ { "screen_modeid", OPTION_STRING, &option_modeid}, \ +{ "screen_compositing", OPTION_INTEGER, &option_screen_compositing}, \ { "cache_bitmaps", OPTION_INTEGER, &option_cache_bitmaps}, \ { "theme", OPTION_STRING, &option_theme}, \ { "clipboard_write_utf8", OPTION_BOOL, &option_utf8_clipboard}, \ |