diff options
author | sr55 <[email protected]> | 2017-04-13 19:46:15 +0100 |
---|---|---|
committer | sr55 <[email protected]> | 2017-04-13 19:46:15 +0100 |
commit | 5dd46e3d4b9029e33a353b9962fea3b8c3c399e4 (patch) | |
tree | d34c164db76b181704d7844af98f350f2502c5b5 /win/CS/HandBrakeWPF/Utilities | |
parent | e568d96f313009f5dd32bd850a48b9ac1a37a56b (diff) |
WinGui: Strip out some out some legacy code that was causing some threading issues.
Diffstat (limited to 'win/CS/HandBrakeWPF/Utilities')
-rw-r--r-- | win/CS/HandBrakeWPF/Utilities/Execute.cs | 153 | ||||
-rw-r--r-- | win/CS/HandBrakeWPF/Utilities/PropertyChangedBase.cs | 121 |
2 files changed, 0 insertions, 274 deletions
diff --git a/win/CS/HandBrakeWPF/Utilities/Execute.cs b/win/CS/HandBrakeWPF/Utilities/Execute.cs deleted file mode 100644 index 0282744f3..000000000 --- a/win/CS/HandBrakeWPF/Utilities/Execute.cs +++ /dev/null @@ -1,153 +0,0 @@ -// -------------------------------------------------------------------------------------------------------------------- -// <copyright company="HandBrake Project (http://handbrake.fr)" file="Execute.cs"> -// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License. -// </copyright> -// <summary> -// Enables easy marshalling of code to the UI thread. -// Borrowed from Caliburn Micro. -// </summary> -// -------------------------------------------------------------------------------------------------------------------- - -namespace HandBrakeWPF.Utilities -{ - using System; - using System.ComponentModel; - using System.Diagnostics; - using System.Threading.Tasks; - using System.Windows; - using System.Windows.Threading; - - /// <summary> - /// Enables easy marshalling of code to the UI thread. - /// </summary> - public static class Execute - { - private static System.Action<System.Action> executor = (System.Action<System.Action>)(action => action()); - private static Dispatcher dispatcher; - private static bool? inDesignMode; - - /// <summary> - /// Gets a value indicating whether or not the framework is in design-time mode. - /// </summary> - public static bool InDesignMode - { - get - { - if (!Execute.inDesignMode.HasValue) - { - Execute.inDesignMode = new bool?((bool)DependencyPropertyDescriptor.FromProperty(DesignerProperties.IsInDesignModeProperty, typeof(FrameworkElement)).Metadata.DefaultValue); - if (!Execute.inDesignMode.GetValueOrDefault(false) && Process.GetCurrentProcess().ProcessName.StartsWith("devenv", StringComparison.Ordinal)) - Execute.inDesignMode = new bool?(true); - } - return Execute.inDesignMode.GetValueOrDefault(false); - } - } - - /// <summary> - /// Initializes the framework using the current dispatcher. - /// </summary> - public static void InitializeWithDispatcher() - { - Execute.dispatcher = Dispatcher.CurrentDispatcher; - Execute.executor = (System.Action<System.Action>)null; - } - - /// <summary> - /// Resets the executor to use a non-dispatcher-based action executor. - /// </summary> - public static void ResetWithoutDispatcher() - { - executor = (System.Action<System.Action>)(action => action()); - dispatcher = (Dispatcher)null; - } - - /// <summary> - /// Sets a custom UI thread marshaller. - /// </summary> - /// <param name="marshaller">The marshaller.</param> - [Obsolete] - public static void SetUIThreadMarshaller(System.Action<System.Action> marshaller) - { - Execute.executor = marshaller; - Execute.dispatcher = (Dispatcher)null; - } - - /// <summary> - /// Executes the action on the UI thread asynchronously. - /// </summary> - /// <param name="action">The action to execute.</param> - public static void BeginOnUIThread(this System.Action action) - { - Execute.ValidateDispatcher(); - Execute.dispatcher.BeginInvoke((Delegate)action); - } - - /// <summary> - /// Executes the action on the UI thread asynchronously. - /// </summary> - /// <param name="action"> - /// The action to execute. - /// </param> - /// <returns> - /// The <see cref="Task"/>. - /// </returns> - public static Task OnUIThreadAsync(this System.Action action) - { - Execute.ValidateDispatcher(); - TaskCompletionSource<object> taskSource = new TaskCompletionSource<object>(); - System.Action action1 = (System.Action)(() => - { - try - { - action(); - taskSource.SetResult((object)null); - } - catch (Exception ex) - { - taskSource.SetException(ex); - } - }); - Execute.dispatcher.BeginInvoke((Delegate)action1); - return (Task)taskSource.Task; - } - - /// <summary> - /// Executes the action on the UI thread. - /// </summary> - /// <param name="action">The action to execute.</param> - public static void OnUIThread(this System.Action action) - { - if (Execute.executor != null) - Execute.executor(action); - else if (Execute.CheckAccess()) - action(); - else - Execute.OnUIThreadAsync(action).Wait(); - } - - /// <summary> - /// The check access. - /// </summary> - /// <returns> - /// The <see cref="bool"/>. - /// </returns> - private static bool CheckAccess() - { - if (Execute.dispatcher != null) - return Execute.dispatcher.CheckAccess(); - return true; - } - - /// <summary> - /// The validate dispatcher. - /// </summary> - /// <exception cref="InvalidOperationException"> - /// Not initialized with dispatcher. - /// </exception> - private static void ValidateDispatcher() - { - if (Execute.dispatcher == null) - throw new InvalidOperationException("Not initialized with dispatcher."); - } - } -} diff --git a/win/CS/HandBrakeWPF/Utilities/PropertyChangedBase.cs b/win/CS/HandBrakeWPF/Utilities/PropertyChangedBase.cs deleted file mode 100644 index 08f206891..000000000 --- a/win/CS/HandBrakeWPF/Utilities/PropertyChangedBase.cs +++ /dev/null @@ -1,121 +0,0 @@ -// -------------------------------------------------------------------------------------------------------------------- -// <copyright company="HandBrake Project (http://handbrake.fr)" file="PropertyChangedBase.cs"> -// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License. -// </copyright> -// <summary> -// A base class that implements the infrastructure for property change notification and automatically performs UI thread marshalling. -// Borrowed from Caliburn Micro -// </summary> -// -------------------------------------------------------------------------------------------------------------------- - -namespace HandBrakeWPF.Utilities -{ - using System; - using System.ComponentModel; - using System.Linq.Expressions; - using System.Runtime.Serialization; - - using INotifyPropertyChangedEx = HandBrakeWPF.Utilities.Interfaces.INotifyPropertyChangedEx; - - /// <summary> - /// A base class that implements the infrastructure for property change notification and automatically performs UI thread marshalling. - /// </summary> - [Serializable] - public class PropertyChangedBase : INotifyPropertyChangedEx, INotifyPropertyChanged - { - [NonSerialized] - private bool isNotifying; - - /// <summary> - /// Gets or sets a value indicating whether the Enables/Disables property change notification. - /// </summary> - [Browsable(false)] - public bool IsNotifying - { - get - { - return this.isNotifying; - } - set - { - this.isNotifying = value; - } - } - - /// <summary> - /// Occurs when a property value changes. - /// </summary> - public event PropertyChangedEventHandler PropertyChanged = (param0, param1) => { }; - - /// <summary> - /// Initializes a new instance of the <see cref="PropertyChangedBase"/> class. - /// Creates an instance of <see cref="T:HandBrakeWPF.Utilities.PropertyChangedBase"/>. - /// </summary> - public PropertyChangedBase() - { - this.IsNotifying = true; - } - - /// <summary> - /// Raises a change notification indicating that all bindings should be refreshed. - /// </summary> - public void Refresh() - { - this.NotifyOfPropertyChange(string.Empty); - } - - /// <summary> - /// Notifies subscribers of the property change. - /// </summary> - /// <param name="propertyName">Name of the property.</param> - public virtual void NotifyOfPropertyChange(string propertyName) - { - if (!this.IsNotifying) - return; - Execute.OnUIThread((System.Action)(() => this.OnPropertyChanged(new PropertyChangedEventArgs(propertyName)))); - } - - /// <summary> - /// Notifies subscribers of the property change. - /// </summary> - /// <typeparam name="TProperty">The type of the property.</typeparam><param name="property">The property expression.</param> - public void NotifyOfPropertyChange<TProperty>(Expression<Func<TProperty>> property) - { - this.NotifyOfPropertyChange(ExtensionMethods.GetMemberInfo((Expression)property).Name); - } - - /// <summary> - /// Called when the object is deserialized. - /// </summary> - /// <param name="c">The streaming context.</param> - [OnDeserialized] - public void OnDeserialized(StreamingContext c) - { - this.IsNotifying = true; - } - - /// <summary> - /// Used to indicate whether or not the IsNotifying property is serialized to Xml. - /// </summary> - /// <returns> - /// Whether or not to serialize the IsNotifying property. The default is false. - /// </returns> - public virtual bool ShouldSerializeIsNotifying() - { - return false; - } - - /// <summary> - /// Raises the <see cref="E:PropertyChanged"/> event directly. - /// </summary> - /// <param name="e">The <see cref="T:System.ComponentModel.PropertyChangedEventArgs"/> instance containing the event data.</param> - [EditorBrowsable(EditorBrowsableState.Never)] - protected void OnPropertyChanged(PropertyChangedEventArgs e) - { - PropertyChangedEventHandler changedEventHandler = this.PropertyChanged; - if (changedEventHandler == null) - return; - changedEventHandler((object)this, e); - } - } -} |