make lua surface clearing more robust

This commit is contained in:
zeromus 2014-06-03 03:09:43 +00:00
parent 0fe74f95e7
commit f75142213b
1 changed files with 16 additions and 2 deletions

View File

@ -524,6 +524,16 @@ TESTEROO:
SwappableDisplaySurfaceSet luaNativeSurfaceSet = new SwappableDisplaySurfaceSet();
public void SetLuaSurfaceNativePreOSD(DisplaySurface surface) { luaNativeSurfaceSet.SetPending(surface); }
/// <summary>
/// Peeks a locked lua surface, or returns null if it isnt locked
/// </summary>
public DisplaySurface PeekLockedLuaSurface(string name)
{
if (MapNameToLuaSurface.ContainsKey(name))
return MapNameToLuaSurface[name];
return null;
}
/// <summary>
/// Locks the requested lua surface name
/// </summary>
@ -558,9 +568,13 @@ TESTEROO:
{
foreach (var kvp in LuaSurfaceSets)
{
var surf = LockLuaSurface(kvp.Key);
var surf = PeekLockedLuaSurface(kvp.Key);
DisplaySurface surfLocked = null;
if (surf == null)
surf = surfLocked = LockLuaSurface(kvp.Key);
surf.Clear();
UnlockLuaSurface(surf);
if(surfLocked != null)
UnlockLuaSurface(surfLocked);
LuaSurfaceSets[kvp.Key].SetPending(null);
}
}