From f1c5abd17ffd572a7586d396622c2891881e5ca4 Mon Sep 17 00:00:00 2001 From: mathias Date: Wed, 27 Apr 2005 21:18:41 +0000 Subject: i added an attribute to FbWindow to mark windows which are only used as "carrier" (maybe a temporarly name?) ... carriers dont need background-updates .. ever. this leads to a big performance"boost" over the last commits. before we updated also the windows which are the hosts for the apps (m_window and m_clientarea in FbWinFrame) -> bad idea. --- ChangeLog | 4 ++-- src/FbTk/FbWindow.cc | 17 +++++++++++------ src/FbTk/FbWindow.hh | 5 +++++ src/FbWinFrame.cc | 2 ++ 4 files changed, 20 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5a9c6a5..b346667 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,8 +1,8 @@ (Format: Year/Month/Day) Changes for 0.9.13 *05/04/27: - * Fix some initialisation, plus setting background too much (Simon) - FbWindow.cc + * Fix some initialisation, plus setting background too much (Simon + Mathias) + FbTk/FbWindow.cc/hh FbWinFrame.cc * Add some extremely basic handling for icon pixmaps that aren't the same depth as the screen (treat all as 1-bit, easy to handle) (Simon) diff --git a/src/FbTk/FbWindow.cc b/src/FbTk/FbWindow.cc index 5a6417f..d3a7736 100644 --- a/src/FbTk/FbWindow.cc +++ b/src/FbTk/FbWindow.cc @@ -46,7 +46,7 @@ namespace FbTk { FbWindow::FbWindow():FbDrawable(), m_parent(0), m_screen_num(0), m_window(0), m_x(0), m_y(0), m_width(0), m_height(0), m_border_width(0), m_depth(0), m_destroy(true), - m_lastbg_color_set(false), m_lastbg_color(0), m_lastbg_pm(0), m_renderer(0) { + m_lastbg_color_set(false), m_lastbg_color(0), m_lastbg_pm(0), m_renderer(0), m_is_carrier(false) { } @@ -58,7 +58,8 @@ FbWindow::FbWindow(const FbWindow& the_copy):FbDrawable(), m_border_width(the_copy.borderWidth()), m_depth(the_copy.depth()), m_destroy(true), m_lastbg_color_set(false), m_lastbg_color(0), - m_lastbg_pm(0), m_renderer(the_copy.m_renderer) { + m_lastbg_pm(0), m_renderer(the_copy.m_renderer), + m_is_carrier(false) { the_copy.m_window = 0; } @@ -76,7 +77,7 @@ FbWindow::FbWindow(int screen_num, m_destroy(true), m_lastbg_color_set(false), m_lastbg_color(0), - m_lastbg_pm(0), m_renderer(0) { + m_lastbg_pm(0), m_renderer(0), m_is_carrier(false) { create(RootWindow(display(), screen_num), x, y, width, height, eventmask, @@ -93,7 +94,7 @@ FbWindow::FbWindow(const FbWindow &parent, m_screen_num(parent.screenNumber()), m_destroy(true), m_lastbg_color_set(false), m_lastbg_color(0), - m_lastbg_pm(0), m_renderer(0) { + m_lastbg_pm(0), m_renderer(0), m_is_carrier(false) { create(parent.window(), x, y, width, height, eventmask, override_redirect, save_unders, depth, class_type); @@ -110,7 +111,7 @@ FbWindow::FbWindow(Window client):FbDrawable(), m_parent(0), m_depth(0), m_destroy(false), // don't destroy this window m_lastbg_color_set(false), m_lastbg_color(0), - m_lastbg_pm(0), m_renderer(0) { + m_lastbg_pm(0), m_renderer(0), m_is_carrier(false) { setNew(client); } @@ -150,10 +151,14 @@ void FbWindow::setBackgroundPixmap(Pixmap bg_pixmap) { } void FbWindow::updateBackground(bool only_if_alpha) { + + if (isCarrier()) + return; + Pixmap newbg = m_lastbg_pm; unsigned char alpha = 255; bool free_newbg = false; - + if (m_lastbg_pm == None && !m_lastbg_color_set) return; diff --git a/src/FbTk/FbWindow.hh b/src/FbTk/FbWindow.hh index b08df5e..a630f4f 100644 --- a/src/FbTk/FbWindow.hh +++ b/src/FbTk/FbWindow.hh @@ -187,6 +187,9 @@ public: void setRenderer(FbWindowRenderer &renderer) { m_renderer = &renderer; } void sendConfigureNotify(int x, int y, unsigned int width, unsigned int height); + /// this window is basicly a carrier and does not need background-updates + void setCarrier(bool flag) { m_is_carrier = flag; } + bool isCarrier() const { return m_is_carrier; } /// forces full background change, recalcing of alpha values if necessary void updateBackground(bool only_if_alpha); @@ -221,6 +224,8 @@ private: Pixmap m_lastbg_pm; FbWindowRenderer *m_renderer; + + bool m_is_carrier; }; bool operator == (Window win, const FbWindow &fbwin); diff --git a/src/FbWinFrame.cc b/src/FbWinFrame.cc index a1745ef..8313f4a 100644 --- a/src/FbWinFrame.cc +++ b/src/FbWinFrame.cc @@ -86,6 +86,8 @@ FbWinFrame::FbWinFrame(FbWinFrameTheme &theme, FbTk::ImageControl &imgctrl, m_themelistener(*this), m_shape(new Shape(m_window, theme.shapePlace())) { m_theme.reconfigSig().attach(&m_themelistener); + m_window.setCarrier(true); + m_clientarea.setCarrier(true); init(); } -- cgit v0.11.2