diff options
author | Jorge Arellano Cid <jcid@dillo.org> | 2014-05-14 19:48:33 -0400 |
---|---|---|
committer | Jorge Arellano Cid <jcid@dillo.org> | 2014-05-14 19:48:33 -0400 |
commit | 4681bc69ac265fae7f6f84cb834ec87ea5bec271 (patch) | |
tree | c599fd3b01f640507f58217463c6289011e05efa /dw/fltkimgbuf.cc | |
parent | b3e3c51d554c3b5146ea23e7074e29c6c4817823 (diff) |
Avoid creation of unnecessary image bufs (at alt-text to img switch)
This is the first of a patch series for image code bugs that have
severe impact on performance.
With these testing files:
1imgA.html = <img src="maj00s.png" alt="img1">
2imgSA.html = <img src="maj00s.png" alt="img1">
<img src="maj00s.png" alt="img12">
3imgSA.html = <img src="maj00s.png" alt="img1">
<img src="maj00s.png" alt="img12">
<img src="maj00s.png" alt="img123">
2imgA.html = <img src="maj00s.png" alt="img1">
<img src="maj21s.png" alt="img12">
3imgA.html = <img src="maj00s.png" alt="img1">
<img src="maj21s.png" alt="img12">
<img src="c10s.png" alt="img123">
This are the results:
.------------------------------------------------------------------.
|imgbufs | No patch | Patched #1 |
| | first time | upon reload | first time | upon reload |
|-------------------------------------------------------------------
|1imgA.html | 2 | 1 | 1 | 1 |
|2imgSA.html | 3 | 2 | 1 | 2 |
|3imgSA.html | 4 | 3 | 1 | 3 |
|-------------------------------------------------------------------
|2imgA.html | 4 | 2 | 2 | 2 |
|3imgA.html | 6 | 3 | 3 | 3 |
'------------------------------------------------------------------'
Diffstat (limited to 'dw/fltkimgbuf.cc')
-rw-r--r-- | dw/fltkimgbuf.cc | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/dw/fltkimgbuf.cc b/dw/fltkimgbuf.cc index 26b46969..01bce455 100644 --- a/dw/fltkimgbuf.cc +++ b/dw/fltkimgbuf.cc @@ -80,7 +80,7 @@ FltkImgbuf::FltkImgbuf (Type type, int width, int height, double gamma) { DBG_OBJ_CREATE ("dw::fltk::FltkImgbuf"); - _MSG("FltkImgbuf: new root %p\n", this); + _MSG ("FltkImgbuf::FltkImgbuf: new root %p\n", this); init (type, width, height, gamma, NULL); } @@ -89,7 +89,7 @@ FltkImgbuf::FltkImgbuf (Type type, int width, int height, double gamma, { DBG_OBJ_CREATE ("dw::fltk::FltkImgbuf"); - _MSG("FltkImgbuf: new scaled %p, root is %p\n", this, root); + _MSG ("FltkImgbuf::FltkImgbuf: new scaled %p, root is %p\n", this, root); init (type, width, height, gamma, root); } @@ -135,8 +135,8 @@ void FltkImgbuf::init (Type type, int width, int height, double gamma, case RGB: bpp = 3; break; default: bpp = 1; break; } - _MSG("FltkImgbuf::init width=%d height=%d bpp=%d gamma=%g\n", - width, height, bpp, gamma); + _MSG("FltkImgbuf::init this=%p width=%d height=%d bpp=%d gamma=%g\n", + this, width, height, bpp, gamma); rawdata = new uchar[bpp * width * height]; // Set light-gray as interim background color. memset(rawdata, 222, width*height*bpp); @@ -163,6 +163,8 @@ void FltkImgbuf::init (Type type, int width, int height, double gamma, FltkImgbuf::~FltkImgbuf () { + _MSG ("FltkImgbuf::~FltkImgbuf\n"); + if (!isRoot()) root->detachScaledBuf (this); |