summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--configure.in5
-rw-r--r--dillo2rc7
-rw-r--r--dw/fltkviewbase.cc13
-rw-r--r--dw/fltkviewbase.hh1
-rw-r--r--src/prefs.c6
-rw-r--r--src/prefs.h1
-rw-r--r--src/uicmd.cc7
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
diff --git a/dillo2rc b/dillo2rc
index 851bea51..c18d75c7 100644
--- a/dillo2rc
+++ b/dillo2rc
@@ -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);