More fixes to Windows live metadata handling.

This commit is contained in:
Thulinma 2015-05-11 19:11:00 +02:00
parent ccaec3d2f8
commit 2845cbedcb

View file

@ -466,6 +466,9 @@ namespace Mist {
trackState[tid] = FILL_NEW;
return;
}
#if defined(__CYGWIN__) || defined(_WIN32)
static std::map<unsigned long, std::string> preservedTempMetas;
#endif
switch (trackState[tid]) {
case FILL_NEW: {
unsigned long newTid = ((long)(tmp[offset]) << 24) | ((long)(tmp[offset + 1]) << 16) | ((long)(tmp[offset + 2]) << 8) | tmp[offset + 3];
@ -488,6 +491,10 @@ namespace Mist {
memcpy(metaPages[tid].mapped, tmpStr.data(), tmpStr.size());
INFO_MSG("Temporary metadata written for incoming track %lu, handling as track %lu", tid, newTid);
//Not actually removing the page, because we set master to false
#if defined(__CYGWIN__) || defined(_WIN32)
IPC::preservePage(pageName);
preservedTempMetas[tid] = pageName;
#endif
metaPages.erase(tid);
trackState[tid] = FILL_NEG;
trackMap[tid] = newTid;
@ -500,6 +507,10 @@ namespace Mist {
INFO_MSG("Negotiating, but firstPage not yet set, waiting for buffer");
break;
}
#if defined(__CYGWIN__) || defined(_WIN32)
IPC::releasePage(preservedTempMetas[tid]);
preservedTempMetas.erase(tid);
#endif
if (finalTid == 0xFFFFFFFF) {
WARN_MSG("Buffer has declined incoming track %lu", tid);
memset(tmp + offset, 0, 6);