summaryrefslogtreecommitdiff
path: root/src/gui/radiobutton.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/radiobutton.cpp')
-rw-r--r--src/gui/radiobutton.cpp34
1 files changed, 29 insertions, 5 deletions
diff --git a/src/gui/radiobutton.cpp b/src/gui/radiobutton.cpp
index d04d8586..f03c333f 100644
--- a/src/gui/radiobutton.cpp
+++ b/src/gui/radiobutton.cpp
@@ -24,15 +24,39 @@
#include "radiobutton.h"
#include "../resources/resourcemanager.h"
+int RadioButton::instances = 0;
+Image *RadioButton::radioNormal;
+Image *RadioButton::radioChecked;
+Image *RadioButton::radioDisabled;
+Image *RadioButton::radioDisabledChecked;
+
RadioButton::RadioButton(const std::string& caption, const std::string& group,
bool marked):
gcn::RadioButton(caption, group, marked)
{
- ResourceManager *resman = ResourceManager::getInstance();
- radioNormal = resman->getImage("graphics/gui/radioout.png");
- radioChecked = resman->getImage("graphics/gui/radioin.png");
- radioDisabled = resman->getImage("graphics/gui/radioout.png");
- radioDisabledChecked = resman->getImage("graphics/gui/radioin.png");
+ if (instances == 0)
+ {
+ ResourceManager *resman = ResourceManager::getInstance();
+ radioNormal = resman->getImage("graphics/gui/radioout.png");
+ radioChecked = resman->getImage("graphics/gui/radioin.png");
+ radioDisabled = resman->getImage("graphics/gui/radioout.png");
+ radioDisabledChecked = resman->getImage("graphics/gui/radioin.png");
+ }
+
+ instances++;
+}
+
+RadioButton::~RadioButton()
+{
+ instances--;
+
+ if (instances == 0)
+ {
+ radioNormal->decRef();
+ radioChecked->decRef();
+ radioDisabled->decRef();
+ radioDisabledChecked->decRef();
+ }
}
void RadioButton::drawBox(gcn::Graphics* graphics)