diff options
author | François Revel <mmu_man@netsurf-browser.org> | 2008-10-05 15:41:24 +0000 |
---|---|---|
committer | François Revel <mmu_man@netsurf-browser.org> | 2008-10-05 15:41:24 +0000 |
commit | 022616ce99f65a02c6d818b0890b61048f1d973a (patch) | |
tree | 81499b6b5072ea4130e6948d531f8571c6b69417 /beos | |
parent | ae7290a2e292bc0d7247730499471e9fd30493ca (diff) | |
download | netsurf-022616ce99f65a02c6d818b0890b61048f1d973a.tar.gz netsurf-022616ce99f65a02c6d818b0890b61048f1d973a.tar.bz2 |
Fix the white flickering and bad redraws (text too dark due to being drawn twice), by setting the ViewColor to transparent (avoiding app_server to draw it), and doing it ourselves in plot_clg() just before drawing the rest.
svn path=/trunk/netsurf/; revision=5486
Diffstat (limited to 'beos')
-rw-r--r-- | beos/beos_plotters.cpp | 16 | ||||
-rw-r--r-- | beos/beos_window.cpp | 8 |
2 files changed, 22 insertions, 2 deletions
diff --git a/beos/beos_plotters.cpp b/beos/beos_plotters.cpp index dfcfc71d7..86667cd98 100644 --- a/beos/beos_plotters.cpp +++ b/beos/beos_plotters.cpp @@ -143,6 +143,20 @@ void nsbeos_current_gc_set(BView *view) bool nsbeos_plot_clg(colour c) { #warning BView::Invalidate() ? + + BView *view; + + view = nsbeos_current_gc/*_lock*/(); + if (view == NULL) { + warn_user("No GC", 0); + return false; + } + + nsbeos_set_colour(c); + view->FillRect(view->Bounds()); + + //nsbeos_current_gc_unlock(); + return true; } @@ -596,10 +610,12 @@ bool nsbeos_plot_bitmap_tile(int x, int y, int width, int height, pretiled = nsbeos_bitmap_get_pretile_y(bitmap); primary = nsbeos_bitmap_get_primary(bitmap); /* use the primary and pretiled widths to scale the w/h provided */ +printf("plot_tile: -> %dx%d\n", width, height); width *= pretiled->Bounds().Width() + 1; width /= primary->Bounds().Width() + 1; height *= pretiled->Bounds().Height() + 1; height /= primary->Bounds().Height() + 1; +printf("plot_tile: -> %dx%d\n", width, height); BView *view; diff --git a/beos/beos_window.cpp b/beos/beos_window.cpp index 2e7827978..e7b2844bb 100644 --- a/beos/beos_window.cpp +++ b/beos/beos_window.cpp @@ -367,8 +367,12 @@ struct gui_window *gui_create_browser_window(struct browser_window *bw, BRect frame(0,0,-1,-1); // will be resized later g->view = new NSBrowserFrameView(frame, g); /* set the default background colour of the drawing area to white. */ - //g->view->SetViewColor(B_TRANSPARENT_COLOR); - g->view->SetViewColor(kWhiteColor); + //g->view->SetViewColor(kWhiteColor); + /* NOOO! Since we defer drawing (DetachCurrent()), the white flickers, + * besides sometimes text was drawn twice, making it ugly. + * Instead we set to transparent here, and implement plot_clg() to + * do it just before the rest. This almost removes the flicker. */ + g->view->SetViewColor(B_TRANSPARENT_COLOR); g->view->SetLowColor(kWhiteColor); #ifdef B_BEOS_VERSION_DANO |