hallo, ich hab schon seit ewigkeiten mit unserem thread der unsere texturen und sounds läd.
wenn ich den thread aus schalte funktioniert alles super(nur der ladebildschirm nicht xD)
wenn ich ihn einschalte wird der ladebildschirm angezeigt aber einer memberfunktion ein falscher wert übergeben.
aufruf:
|
C-/C++-Quelltext
|
1
|
g_pSoundManager.SetLoop(gBackground, true);
|
funktion:
|
C-/C++-Quelltext
|
1
2
3
|
void cSoundManager::SetLoop(Sounds SoundName, bool Loop) {
m_Sounds[SoundName].SetLoop(Loop);
}
|
enum:
|
C-/C++-Quelltext
|
1
2
3
4
5
|
enum Sounds {
gBackground,
gShot,
gExplosion
};
|
beim debuggen ist mir aufgefallen, dass SoundName mit thread einen ziemlich hohen wert hat. ohne thread ist der wert 0.
mehr infos hab ich leider nicht.
im thread selbst hab ich schon vor jedem datenzugriff gelockt, auch wenn es gar nicht nötig wäre. an falscher synchronisation liegt es also nicht.
hat jemand eine idee woran das liegen könnte?
edit: mit der debug version gibt es keine probleme.
edit2: problem gefunden. wenn man in einem thread speicher reserviert und den thread beendet wird der speicher ungültig. stand leider in keiner beschreibung von threads
danke trotzdem xD