Give sorted configs a unique ID without changing the original set

TRAC #12323 This fixes building on Visual C++ 2010, which has const iterators for STL sets as specified by C++0x. Signed-off-by: Shannon Woods Singed-off-by: Daniel Koch Author: Nicolas Capens git-svn-id: https://angleproject.googlecode.com/svn/trunk@302 736b8ea6-26fd-11df-bfd4-992fa37f6226
parent cd0a9a88
...@@ -296,17 +296,6 @@ void ConfigSet::add(D3DDISPLAYMODE displayMode, EGLint minSwapInterval, EGLint m ...@@ -296,17 +296,6 @@ void ConfigSet::add(D3DDISPLAYMODE displayMode, EGLint minSwapInterval, EGLint m
mSet.insert(config); mSet.insert(config);
} }
void ConfigSet::enumerate()
{
EGLint index = 1;
for (Iterator config = mSet.begin(); config != mSet.end(); config++)
{
config->mConfigID = index;
index++;
}
}
size_t ConfigSet::size() const size_t ConfigSet::size() const
{ {
return mSet.size(); return mSet.size();
......
...@@ -21,6 +21,8 @@ ...@@ -21,6 +21,8 @@
namespace egl namespace egl
{ {
class Display;
class Config class Config
{ {
public: public:
...@@ -92,22 +94,23 @@ class SortConfig ...@@ -92,22 +94,23 @@ class SortConfig
class ConfigSet class ConfigSet
{ {
friend Display;
public: public:
ConfigSet(); ConfigSet();
void add(D3DDISPLAYMODE displayMode, EGLint minSwapInterval, EGLint maxSwapInterval, D3DFORMAT renderTargetFormat, D3DFORMAT depthStencilFormat, EGLint multiSample); void add(D3DDISPLAYMODE displayMode, EGLint minSwapInterval, EGLint maxSwapInterval, D3DFORMAT renderTargetFormat, D3DFORMAT depthStencilFormat, EGLint multiSample);
void enumerate();
size_t size() const; size_t size() const;
bool getConfigs(EGLConfig *configs, const EGLint *attribList, EGLint configSize, EGLint *numConfig); bool getConfigs(EGLConfig *configs, const EGLint *attribList, EGLint configSize, EGLint *numConfig);
const egl::Config *get(EGLConfig configHandle); const egl::Config *get(EGLConfig configHandle);
private:
DISALLOW_COPY_AND_ASSIGN(ConfigSet);
typedef std::set<Config, SortConfig> Set; typedef std::set<Config, SortConfig> Set;
typedef Set::iterator Iterator; typedef Set::iterator Iterator;
Set mSet; Set mSet;
private:
DISALLOW_COPY_AND_ASSIGN(ConfigSet);
static const EGLint mSortAttribs[]; static const EGLint mSortAttribs[];
}; };
} }
......
...@@ -103,6 +103,8 @@ bool Display::initialize() ...@@ -103,6 +103,8 @@ bool Display::initialize()
D3DDISPLAYMODE currentDisplayMode; D3DDISPLAYMODE currentDisplayMode;
mD3d9->GetAdapterDisplayMode(mAdapter, &currentDisplayMode); mD3d9->GetAdapterDisplayMode(mAdapter, &currentDisplayMode);
ConfigSet configSet;
for (int formatIndex = 0; formatIndex < sizeof(renderTargetFormats) / sizeof(D3DFORMAT); formatIndex++) for (int formatIndex = 0; formatIndex < sizeof(renderTargetFormats) / sizeof(D3DFORMAT); formatIndex++)
{ {
D3DFORMAT renderTargetFormat = renderTargetFormats[formatIndex]; D3DFORMAT renderTargetFormat = renderTargetFormats[formatIndex];
...@@ -124,15 +126,24 @@ bool Display::initialize() ...@@ -124,15 +126,24 @@ bool Display::initialize()
{ {
// FIXME: Enumerate multi-sampling // FIXME: Enumerate multi-sampling
mConfigSet.add(currentDisplayMode, mMinSwapInterval, mMaxSwapInterval, renderTargetFormat, depthStencilFormat, 0); configSet.add(currentDisplayMode, mMinSwapInterval, mMaxSwapInterval, renderTargetFormat, depthStencilFormat, 0);
}
} }
} }
} }
} }
} }
mConfigSet.enumerate(); // Give the sorted configs a unique ID and store them internally
EGLint index = 1;
for (ConfigSet::Iterator config = configSet.mSet.begin(); config != configSet.mSet.end(); config++)
{
Config configuration = *config;
configuration.mConfigID = index;
index++;
mConfigSet.mSet.insert(configuration);
}
}
} }
if (!isInitialized()) if (!isInitialized())
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment