diff options
author | jcid <devnull@localhost> | 2008-10-09 15:26:45 +0200 |
---|---|---|
committer | jcid <devnull@localhost> | 2008-10-09 15:26:45 +0200 |
commit | 4fea52451363423ccb2ddb74f374f265f38b1755 (patch) | |
tree | 6bf82be1582627de70043325db6b84e8daca9da9 | |
parent | 7ed06b326e8dbffd2af13ea3061576046ac1f2d4 (diff) |
- Added the double-buffer as preference patch.
-rw-r--r-- | configure.in | 5 | ||||
-rw-r--r-- | dillo2rc | 7 | ||||
-rw-r--r-- | dw/fltkviewbase.cc | 13 | ||||
-rw-r--r-- | dw/fltkviewbase.hh | 1 | ||||
-rw-r--r-- | src/prefs.c | 6 | ||||
-rw-r--r-- | src/prefs.h | 1 | ||||
-rw-r--r-- | src/uicmd.cc | 7 |
7 files changed, 31 insertions, 9 deletions
diff --git a/configure.in b/configure.in index f37a0f29..64200891 100644 --- a/configure.in +++ b/configure.in @@ -35,8 +35,6 @@ AC_ARG_ENABLE(ssl, [ --disable-ssl Disable ssl features (eg. https AC_ARG_ENABLE(threaded-dns,[ --disable-threaded-dns Disable the advantage of a reentrant resolver library], enable_threaded_dns=$enableval, enable_threaded_dns=yes) AC_ARG_ENABLE(rtfl, [ --enable-rtfl Build with rtfl messages]) -AC_ARG_ENABLE(doublebuffer, [ --disable-doublebuffer Disable double buffering for drawing], , enable_doublebuffer=yes) - AC_PROG_CC AC_PROG_CXX AM_PROG_CC_STDC @@ -430,9 +428,6 @@ fi if test "x$enable_rtfl" = "xyes" ; then CXXFLAGS="$CXXFLAGS -DDBG_RTFL" fi -if test "x$enable_doublebuffer" = "xno" ; then - CXXFLAGS="$CXXFLAGS -DNO_DOUBLEBUFFER" -fi dnl ----------------------- dnl Checks for header files @@ -18,6 +18,13 @@ # (there's a toggle button near the bug meter to change this on-the-fly) #load_images=YES + +# Change the buffering scheme for drawing +# 0 no double buffering - useful for debugging +# 1 light buffering using a single back buffer for all windows +# 2 full fltk-based double buffering for all windows +#buffered_drawing=1 + # Set your default directory for download/save operations #save_dir=/tmp diff --git a/dw/fltkviewbase.cc b/dw/fltkviewbase.cc index fbbd15bd..ff433a45 100644 --- a/dw/fltkviewbase.cc +++ b/dw/fltkviewbase.cc @@ -50,11 +50,9 @@ FltkViewBase::FltkViewBase (int x, int y, int w, int h, const char *label): lastDraw = time(0); drawDelay = 2; /* in seconds */ mouse_x = mouse_y = 0; -#ifndef NO_DOUBLEBUFFER - if (!backBuffer) { + if (backBuffer == NULL) { backBuffer = new Image (); } -#endif } FltkViewBase::~FltkViewBase () @@ -62,6 +60,15 @@ FltkViewBase::~FltkViewBase () cancelQueueDraw (); } +void FltkViewBase::setBufferedDrawing (bool b) { + if (b && backBuffer == NULL) { + backBuffer = new Image (); + } else if (!b && backBuffer != NULL) { + delete backBuffer; + backBuffer = NULL; + } +} + void FltkViewBase::draw () { int d = damage (); diff --git a/dw/fltkviewbase.hh b/dw/fltkviewbase.hh index 09bcce39..fcc2b43d 100644 --- a/dw/fltkviewbase.hh +++ b/dw/fltkviewbase.hh @@ -75,6 +75,7 @@ public: core::View *getClippingView (int x, int y, int width, int height); void mergeClippingView (core::View *clippingView); + void setBufferedDrawing (bool b); }; diff --git a/src/prefs.c b/src/prefs.c index 3c87f730..67b99617 100644 --- a/src/prefs.c +++ b/src/prefs.c @@ -76,6 +76,7 @@ typedef enum { DRC_TOKEN_LIMIT_TEXT_WIDTH, DRC_TOKEN_LINK_COLOR, DRC_TOKEN_LOAD_IMAGES, + DRC_TOKEN_BUFFERED_DRAWING, DRC_TOKEN_MIDDLE_CLICK_OPENS_NEW_TAB, DRC_TOKEN_NOPROXY, DRC_TOKEN_PANEL_SIZE, @@ -123,6 +124,7 @@ struct SymNode_ { static const SymNode_t symbols[] = { { "allow_white_bg", DRC_TOKEN_ALLOW_WHITE_BG }, { "bg_color", DRC_TOKEN_BG_COLOR }, + { "buffered_drawing", DRC_TOKEN_BUFFERED_DRAWING }, { "contrast_visited_color", DRC_TOKEN_CONTRAST_VISITED_COLOR }, { "enterpress_forces_submit", DRC_TOKEN_ENTERPRESS_FORCES_SUBMIT }, { "focus_new_tab", DRC_TOKEN_FOCUS_NEW_TAB }, @@ -321,6 +323,9 @@ static int Prefs_parse_pair(char *name, char *value) case DRC_TOKEN_LOAD_IMAGES: prefs.load_images = (strcmp(value, "YES") == 0); break; + case DRC_TOKEN_BUFFERED_DRAWING: + prefs.buffered_drawing = atoi(value); + break; case DRC_TOKEN_FW_FONT: dFree(prefs.fw_fontname); prefs.fw_fontname = dStrdup(value); @@ -444,6 +449,7 @@ void a_Prefs_init(void) prefs.show_progress_box=TRUE; prefs.fullwindow_start=FALSE; prefs.load_images=TRUE; + prefs.buffered_drawing=1; prefs.vw_fontname = dStrdup(D_VW_FONTNAME); prefs.fw_fontname = dStrdup(D_FW_FONTNAME); prefs.generate_submit = FALSE; diff --git a/src/prefs.h b/src/prefs.h index 46096aff..275aec48 100644 --- a/src/prefs.h +++ b/src/prefs.h @@ -52,6 +52,7 @@ struct _DilloPrefs { bool_t show_progress_box; bool_t fullwindow_start; bool_t load_images; + int32_t buffered_drawing; char *vw_fontname; char *fw_fontname; bool_t generate_submit; diff --git a/src/uicmd.cc b/src/uicmd.cc index 15907f47..d6a52f0f 100644 --- a/src/uicmd.cc +++ b/src/uicmd.cc @@ -168,7 +168,8 @@ BrowserWindow *a_UIcmd_browser_window_new(int ww, int wh, const void *vbw) Window *win = new Window(ww, wh); win->shortcut(0); // Ignore Escape - win->clear_double_buffer(); + if (prefs.buffered_drawing != 2) + win->clear_double_buffer(); win->set_flag(RAW_LABEL); CustTabGroup *DilloTabs = new CustTabGroup(0, 0, ww, wh); DilloTabs->clear_tab_to_focus(); @@ -198,6 +199,10 @@ BrowserWindow *a_UIcmd_browser_window_new(int ww, int wh, const void *vbw) Layout *layout = new Layout (platform); FltkViewport *viewport = new FltkViewport (0, 0, 1, 1); + if (prefs.buffered_drawing == 1) + viewport->setBufferedDrawing (true); + else + viewport->setBufferedDrawing (false); layout->attachView (viewport); new_ui->set_render_layout(*viewport); |