fix unity log call from native.

This commit is contained in:
hecomi
2016-11-27 16:22:03 +09:00
parent ce9c148282
commit 67c90073d9
7 changed files with 45 additions and 21 deletions
+6 -4
View File
@@ -2,6 +2,8 @@
using System.Text;
using System.Runtime.InteropServices;
#pragma warning disable 114, 465
namespace uDesktopDuplication
{
@@ -77,9 +79,9 @@ public static class Lib
public delegate void DebugLogDelegate(string str);
[DllImport("uDesktopDuplication")]
public static extern void InitializeUDD();
public static extern void Initialize();
[DllImport("uDesktopDuplication")]
public static extern void FinalizeUDD();
public static extern void Finalize();
[DllImport("uDesktopDuplication")]
public static extern void Reinitialize();
[DllImport("uDesktopDuplication")]
@@ -93,9 +95,9 @@ public static class Lib
[DllImport("uDesktopDuplication")]
public static extern void SetDebugMode(DebugMode mode);
[DllImport("uDesktopDuplication")]
public static extern void SetLogFunc(IntPtr func);
public static extern void SetLogFunc(DebugLogDelegate func);
[DllImport("uDesktopDuplication")]
public static extern void SetErrorFunc(IntPtr func);
public static extern void SetErrorFunc(DebugLogDelegate func);
[DllImport("uDesktopDuplication")]
public static extern int GetMonitorCount();
[DllImport("uDesktopDuplication")]
+16 -2
View File
@@ -52,7 +52,9 @@ public class Manager : MonoBehaviour
}
}
[Tooltip("Debug mode is not applied while running.")]
[SerializeField] DebugMode debugMode = DebugMode.File;
[SerializeField] int desktopDuplicationApiTimeout = 0;
[SerializeField] float retryReinitializationDuration = 1f;
@@ -61,6 +63,9 @@ public class Manager : MonoBehaviour
private float reinitializationTimer_ = 0f;
private bool isFirstFrame_ = true;
public static event Lib.DebugLogDelegate onDebugLog = msg => Debug.Log(msg);
public static event Lib.DebugLogDelegate onDebugErr = msg => Debug.LogError(msg);
public delegate void ReinitializeHandler();
public static event ReinitializeHandler onReinitialized;
@@ -89,15 +94,18 @@ public class Manager : MonoBehaviour
instance_ = this;
Lib.SetDebugMode(debugMode);
Lib.SetLogFunc(onDebugLog);
Lib.SetErrorFunc(onDebugErr);
Lib.SetTimeout(desktopDuplicationApiTimeout);
Lib.InitializeUDD();
Lib.Initialize();
CreateMonitors();
}
void OnApplicationQuit()
{
Lib.FinalizeUDD();
Lib.Finalize();
DestroyMonitors();
}
@@ -107,6 +115,9 @@ public class Manager : MonoBehaviour
if (!isFirstFrame_) {
Reinitialize();
}
Lib.SetDebugMode(debugMode);
Lib.SetLogFunc(onDebugLog);
}
void OnDisable()
@@ -115,6 +126,9 @@ public class Manager : MonoBehaviour
StopCoroutine(renderCoroutine_);
renderCoroutine_ = null;
}
Lib.SetLogFunc(null);
Lib.SetErrorFunc(null);
}
void Update()