Tidy up some redundant pixmap allocs

This commit is contained in:
simonb 2005-04-02 14:59:38 +00:00
parent 62431956b4
commit 007c495239
4 changed files with 40 additions and 17 deletions

View file

@ -1,5 +1,8 @@
(Format: Year/Month/Day)
Changes for 0.9.13
*05/04/03:
* Tidy up some redundant pixmap allocations (Simon)
Menu.cc TextButton.cc FbPixmap.hh
*05/03/23:
* added "Fullscreen" as a command (Mathias)
CurrentWindow.cc/hh FbCommandFactory.cc

View file

@ -70,11 +70,12 @@ public:
static Pixmap getRootPixmap(int screen_num);
private:
void free();
void create(Drawable src,
unsigned int width, unsigned int height,
int depth);
private:
void free();
Pixmap m_pm;
unsigned int m_width, m_height;
int m_depth;

View file

@ -473,12 +473,19 @@ void Menu::updateMenu(int active_index) {
// buffer pixmap -> resize buffer pixmap
if (m_title_pm.width() != width() ||
m_title_pm.height() != theme().titleHeight()) {
m_title_pm = FbPixmap(menu.title.window(),
width(), theme().titleHeight(),
menu.title.depth());
m_real_title_pm = FbPixmap(menu.title.window(),
if (m_title_pm.drawable() != None) {
m_title_pm.resize(width(), theme().titleHeight());
m_real_title_pm.resize(width(), theme().titleHeight());
} else {
m_title_pm.create(menu.title.window(),
width(), theme().titleHeight(),
menu.title.depth());
m_real_title_pm.create(menu.title.window(),
width(), theme().titleHeight(),
menu.title.depth());
}
// set pixmap that we have as real face to the user
menu.title.setBackgroundPixmap(m_real_title_pm.drawable());
menu.title.setBufferPixmap(m_real_title_pm.drawable());
@ -560,13 +567,18 @@ void Menu::updateMenu(int active_index) {
if (m_need_update || m_frame_pm.width() != menu.frame.width() ||
m_frame_pm.height() != menu.frame.height()){
m_frame_pm = FbTk::FbPixmap(menu.frame.window(),
menu.frame.width(), menu.frame.height(),
menu.frame.depth());
if (m_frame_pm.drawable() != None) {
m_frame_pm.resize(menu.frame.width(), menu.frame.height());
m_real_frame_pm.resize(menu.frame.width(), menu.frame.height());
} else {
m_frame_pm.create(menu.frame.window(),
menu.frame.width(), menu.frame.height(),
menu.frame.depth());
m_real_frame_pm = FbTk::FbPixmap(menu.frame.window(),
menu.frame.width(), menu.frame.height(),
menu.frame.depth());
m_real_frame_pm.create(menu.frame.window(),
menu.frame.width(), menu.frame.height(),
menu.frame.depth());
}
if (m_transp.get() != 0)
m_transp->setDest(m_real_frame_pm.drawable(), screenNumber());
@ -591,7 +603,6 @@ void Menu::updateMenu(int active_index) {
0, 0,
width(), menu.frame_h);
}
}

View file

@ -43,7 +43,10 @@ TextButton::TextButton(const FbTk::FbWindow &parent,
}
void TextButton::resize(unsigned int width, unsigned int height) {
m_buffer.resize(width, height);
if (this->width() == width && height == this->height())
return;
m_buffer.resize(width, height);
if (backgroundPixmap() != ParentRelative)
FbWindow::setBackgroundPixmap(m_buffer.drawable());
@ -52,10 +55,16 @@ void TextButton::resize(unsigned int width, unsigned int height) {
void TextButton::moveResize(int x, int y,
unsigned int width, unsigned int height) {
m_buffer.resize(width, height);
if (this->width() == width && height == this->height() &&
x == this->x() && y == this->y())
return;
if (this->width() != width || height != this->height())
m_buffer.resize(width, height);
if (backgroundPixmap() != ParentRelative)
FbWindow::setBackgroundPixmap(m_buffer.drawable());
Button::moveResize(x, y, width, height);
}
@ -104,7 +113,6 @@ void TextButton::clearArea(int x, int y,
unsigned int width, unsigned int height,
bool exposure) {
if (backgroundPixmap() != ParentRelative) {
if (backgroundPixmap()) {
m_buffer.copyArea(backgroundPixmap(),
gc(),
@ -120,7 +128,6 @@ void TextButton::clearArea(int x, int y,
width, height);
}
drawText();
setBufferPixmap(m_buffer.drawable());
@ -163,6 +170,7 @@ void TextButton::drawText(int x_offset, int y_offset) {
gc(), // graphic context
text().c_str(), textlen, // string and string size
align_x + x_offset + m_left_padding, center_pos + y_offset); // position
}
void TextButton::exposeEvent(XExposeEvent &event) {