summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dxr3osd.c10
-rw-r--r--dxr3osd.h4
2 files changed, 10 insertions, 4 deletions
diff --git a/dxr3osd.c b/dxr3osd.c
index 72b7dc4..288f62a 100644
--- a/dxr3osd.c
+++ b/dxr3osd.c
@@ -62,8 +62,6 @@ public:
};
#endif
-#define MAXNUMWINDOWS 7 // OSD windows are counted 1...7
-
// ==================================
//! constructor
cDxr3Osd::cDxr3Osd(int Left, int Top, uint Level)
@@ -135,11 +133,15 @@ eOsdError cDxr3Osd::CanHandleAreas(const tArea *Areas, int NumAreas)
eOsdError cDxr3Osd::SetAreas(const tArea *Areas, int NumAreas)
{
- if (shown)
- {
+ if (shown) {
Spu->Clear();
shown = false;
}
+
+ // store area informations
+ memcpy(areas, Areas, sizeof(tArea) * NumAreas);
+ numAreas = NumAreas;
+
return cOsd::SetAreas(Areas, NumAreas);
}
diff --git a/dxr3osd.h b/dxr3osd.h
index 1738587..3d0ab07 100644
--- a/dxr3osd.h
+++ b/dxr3osd.h
@@ -11,6 +11,8 @@ public:
virtual cOsd *CreateOsd(int Left, int Top, uint Level);
};
+static const int MAXNUMWINDOWS = 7;
+
// ==================================
// osd interface
class cDxr3Osd : public cOsd {
@@ -31,6 +33,8 @@ private:
bool shown; ///< is the osd shown?
cPalette* Palette; ///< global palette (needed by all bitmaps)
cTimeMs *last;
+ tArea areas[MAXNUMWINDOWS];
+ int numAreas;
};
#endif /*_DXR3_OSD_H_*/