From 5238a8fd782d5dc703aa788126748050f0cd604e Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Sat, 1 Dec 2012 19:33:45 +0300 Subject: Add batch drawing to popup. --- src/gui/widgets/popup.cpp | 24 +++++++++++++++--------- src/gui/widgets/popup.h | 4 ++-- 2 files changed, 17 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/gui/widgets/popup.cpp b/src/gui/widgets/popup.cpp index 03beec766..ee00a07d2 100644 --- a/src/gui/widgets/popup.cpp +++ b/src/gui/widgets/popup.cpp @@ -43,7 +43,7 @@ Popup::Popup(const std::string &name, mMinHeight(40), mMaxWidth(mainGraphics->mWidth), mMaxHeight(mainGraphics->mHeight), - mVertexes(new GraphicsVertexes()), + mVertexes(new ImageCollection), mRedraw(true) { logger->log("Popup::Popup(\"%s\")", name.c_str()); @@ -105,16 +105,22 @@ void Popup::draw(gcn::Graphics *graphics) BLOCK_START("Popup::draw") Graphics *const g = static_cast(graphics); - if (mRedraw) + if (openGLMode != 2) { - mRedraw = false; - g->calcWindow(mVertexes, 0, 0, getWidth(), - getHeight(), mSkin->getBorder()); - } - - g->drawImageRect2(mVertexes, mSkin->getBorder()); + if (mRedraw) + { + mRedraw = false; + mVertexes->clear(); + g->calcWindow(mVertexes, 0, 0, getWidth(), + getHeight(), mSkin->getBorder()); + } -// g->drawImageRect(0, 0, getWidth(), getHeight(), mSkin->getBorder()); + g->drawTile(mVertexes); + } + else + { + g->drawImageRect(0, 0, getWidth(), getHeight(), mSkin->getBorder()); + } drawChildren(graphics); BLOCK_END("Popup::draw") diff --git a/src/gui/widgets/popup.h b/src/gui/widgets/popup.h index bc2acffe3..ac4cc6e94 100644 --- a/src/gui/widgets/popup.h +++ b/src/gui/widgets/popup.h @@ -30,7 +30,7 @@ #include #include -class GraphicsVertexes; +class ImageCollection; class Skin; class WindowContainer; @@ -177,7 +177,7 @@ class Popup : public Container, public gcn::MouseListener, int mPadding; /**< Holds the padding of the popup. */ Skin *mSkin; /**< Skin in use by this popup */ - GraphicsVertexes *mVertexes; + ImageCollection *mVertexes; bool mRedraw; }; -- cgit v1.2.3-60-g2f50