private Interop.AppEvent.SafeAppEventHandle _lowMemoryNativeHandle;
private Interop.AppEvent.SafeAppEventHandle _localeChangedNativeHandle;
+ private Interop.AppEvent.AppEventCallback _appEventCallback;
+
private object _lock = new object();
private DirectoryInfo _directoryInfo;
private ApplicationInfo _applicationInfo;
/// <summary>
+ /// Initializes Application instance.
+ /// </summary>
+ public Application()
+ {
+ _appEventCallback = new Interop.AppEvent.AppEventCallback(HandleAppEvent);
+ }
+
+ /// <summary>
/// Occurs when the application is launched.
/// </summary>
public event EventHandler Created;
s_CurrentApplication = this;
- Interop.AppEvent.AddEventHandler(Interop.AppEvent.EventNames.LowMemory, HandleAppEvent, IntPtr.Zero, out _lowMemoryNativeHandle);
- Interop.AppEvent.AddEventHandler(Interop.AppEvent.EventNames.LanguageSet, HandleAppEvent, IntPtr.Zero, out _localeChangedNativeHandle);
+ Interop.AppEvent.AddEventHandler(Interop.AppEvent.EventNames.LowMemory, _appEventCallback, IntPtr.Zero, out _lowMemoryNativeHandle);
+ Interop.AppEvent.AddEventHandler(Interop.AppEvent.EventNames.LanguageSet, _appEventCallback, IntPtr.Zero, out _localeChangedNativeHandle);
}
/// <summary>
/// </summary>
public class ServiceApplication : Application
{
+ private Interop.Service.ServiceAppLifecycleCallbacks _callbacks;
+
+ /// <summary>
+ /// Initializes ServiceApplication class.
+ /// </summary>
+ public ServiceApplication()
+ {
+ _callbacks.OnCreate = new Interop.Service.ServiceAppCreateCallback(OnCreateNative);
+ _callbacks.OnTerminate = new Interop.Service.ServiceAppTerminateCallback(OnTerminateNative);
+ _callbacks.OnAppControl = new Interop.Service.ServiceAppControlCallback(OnAppControlNative);
+ }
+
/// <summary>
/// Runs the service application's main loop.
/// </summary>
{
base.Run(args);
- Interop.Service.ServiceAppLifecycleCallbacks ops;
- ops.OnCreate = (data) =>
- {
- OnCreate();
- return true;
- };
- ops.OnTerminate = (data) =>
- {
- OnTerminate();
- };
- ops.OnAppControl = (appControlHandle, data) =>
- {
- OnAppControlReceived(new AppControlReceivedEventArgs { ReceivedAppControl = new ReceivedAppControl(appControlHandle) });
- };
-
TizenSynchronizationContext.Initialize();
- Interop.Service.Main(args.Length, args, ref ops, IntPtr.Zero);
+ Interop.Service.Main(args.Length, args, ref _callbacks, IntPtr.Zero);
}
/// <summary>
{
Interop.Service.Exit();
}
+
+ private bool OnCreateNative(IntPtr data)
+ {
+ OnCreate();
+ return true;
+ }
+
+ private void OnTerminateNative(IntPtr data)
+ {
+ OnTerminate();
+ }
+
+ private void OnAppControlNative(IntPtr appControlHandle, IntPtr data)
+ {
+ OnAppControlReceived(new AppControlReceivedEventArgs { ReceivedAppControl = new ReceivedAppControl(appControlHandle) });
+ }
}
}
/// </summary>
public class UIApplication : Application
{
+ private Interop.Application.UIAppLifecycleCallbacks _callbacks;
+
+ /// <summary>
+ /// Initializes UIApplication class.
+ /// </summary>
+ public UIApplication()
+ {
+ _callbacks.OnCreate = new Interop.Application.AppCreateCallback(OnCreateNative);
+ _callbacks.OnTerminate = new Interop.Application.AppTerminateCallback(OnTerminateNative);
+ _callbacks.OnAppControl = new Interop.Application.AppControlCallback(OnAppControlNative);
+ _callbacks.OnResume = new Interop.Application.AppResumeCallback(OnResumeNative);
+ _callbacks.OnPause = new Interop.Application.AppPauseCallback(OnPauseNative);
+ }
+
/// <summary>
/// Occurs whenever the application is resumed.
/// </summary>
{
base.Run(args);
- Interop.Application.UIAppLifecycleCallbacks ops;
- ops.OnCreate = (data) =>
- {
- SendCreate();
- return true;
- };
- ops.OnTerminate = (data) =>
- {
- OnTerminate();
- };
- ops.OnAppControl = (appControlHandle, data) =>
- {
- OnAppControlReceived(new AppControlReceivedEventArgs { ReceivedAppControl = new ReceivedAppControl(appControlHandle) });
- };
- ops.OnResume = (data) =>
- {
- OnResume();
- };
- ops.OnPause = (data) =>
- {
- OnPause();
- };
-
TizenSynchronizationContext.Initialize();
- Interop.Application.Main(args.Length, args, ref ops, IntPtr.Zero);
+ Interop.Application.Main(args.Length, args, ref _callbacks, IntPtr.Zero);
}
/// <summary>
Paused?.Invoke(this, EventArgs.Empty);
}
- private void SendCreate()
+ private bool OnCreateNative(IntPtr data)
{
Window = new Window("C# UI Application");
Window.Closed += (s, e) =>
Exit();
};
OnCreate();
+ return true;
+ }
+
+ private void OnTerminateNative(IntPtr data)
+ {
+ OnTerminate();
+ }
+
+ private void OnAppControlNative(IntPtr appControlHandle, IntPtr data)
+ {
+ OnAppControlReceived(new AppControlReceivedEventArgs { ReceivedAppControl = new ReceivedAppControl(appControlHandle) });
+ }
+
+ private void OnResumeNative(IntPtr data)
+ {
+ OnResume();
+ }
+
+ private void OnPauseNative(IntPtr data)
+ {
+ OnPause();
}
}
}