diff options
author | therzok <marius.ungureanu@xamarin.com> | 2016-04-18 13:37:21 +0300 |
---|---|---|
committer | therzok <marius.ungureanu@xamarin.com> | 2016-04-18 13:37:21 +0300 |
commit | e721579179ce1a8af1eae2d783687354d4f68b9b (patch) | |
tree | 3eb576bcbc81ed2598d6fddb54e41be0bb81e534 /main | |
parent | 22652b4e4cf5db7fcbcfb1758fa59d42cac42eaf (diff) |
[VCS] Load icons on the UI thread regardless of where the event is triggered.
This shouldn't happen, as the initialized event should be happening on the UI thread.
Bug 40443 - VersionControl is not threadsafe
Diffstat (limited to 'main')
-rw-r--r-- | main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/VersionControlService.cs | 38 |
1 files changed, 20 insertions, 18 deletions
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/VersionControlService.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/VersionControlService.cs index 0c1fb6bdc4..18f9dcb1ca 100644 --- a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/VersionControlService.cs +++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/VersionControlService.cs @@ -54,25 +54,27 @@ namespace MonoDevelop.VersionControl static VersionControlService () { - IdeApp.Initialized += delegate { + IdeApp.Initialized += async delegate { try { - overlay_modified = Xwt.Drawing.Image.FromResource("modified-overlay-16.png"); - overlay_removed = Xwt.Drawing.Image.FromResource("removed-overlay-16.png"); - overlay_renamed = Xwt.Drawing.Image.FromResource("renamed-overlay-16.png"); - overlay_conflicted = Xwt.Drawing.Image.FromResource("conflict-overlay-16.png"); - overlay_added = Xwt.Drawing.Image.FromResource("added-overlay-16.png"); - overlay_controled = Xwt.Drawing.Image.FromResource("versioned-overlay-16.png"); - overlay_unversioned = Xwt.Drawing.Image.FromResource("unversioned-overlay-16.png"); - overlay_protected = Xwt.Drawing.Image.FromResource("lock-required-overlay-16.png"); - overlay_unlocked = Xwt.Drawing.Image.FromResource("unlocked-overlay-16.png"); - overlay_locked = Xwt.Drawing.Image.FromResource("locked-overlay-16.png"); - overlay_ignored = Xwt.Drawing.Image.FromResource("ignored-overlay-16.png"); -
- icon_modified = ImageService.GetIcon ("vc-file-modified", Gtk.IconSize.Menu); - icon_removed = ImageService.GetIcon ("vc-file-removed", Gtk.IconSize.Menu); - icon_conflicted = ImageService.GetIcon ("vc-file-conflicted", Gtk.IconSize.Menu); - icon_added = ImageService.GetIcon ("vc-file-added", Gtk.IconSize.Menu); - icon_controled = Xwt.Drawing.Image.FromResource("versioned-overlay-16.png"); + await Runtime.RunInMainThread (() => { + overlay_modified = Xwt.Drawing.Image.FromResource ("modified-overlay-16.png"); + overlay_removed = Xwt.Drawing.Image.FromResource ("removed-overlay-16.png"); + overlay_renamed = Xwt.Drawing.Image.FromResource ("renamed-overlay-16.png"); + overlay_conflicted = Xwt.Drawing.Image.FromResource ("conflict-overlay-16.png"); + overlay_added = Xwt.Drawing.Image.FromResource ("added-overlay-16.png"); + overlay_controled = Xwt.Drawing.Image.FromResource ("versioned-overlay-16.png"); + overlay_unversioned = Xwt.Drawing.Image.FromResource ("unversioned-overlay-16.png"); + overlay_protected = Xwt.Drawing.Image.FromResource ("lock-required-overlay-16.png"); + overlay_unlocked = Xwt.Drawing.Image.FromResource ("unlocked-overlay-16.png"); + overlay_locked = Xwt.Drawing.Image.FromResource ("locked-overlay-16.png"); + overlay_ignored = Xwt.Drawing.Image.FromResource ("ignored-overlay-16.png"); + + icon_modified = ImageService.GetIcon ("vc-file-modified", Gtk.IconSize.Menu); + icon_removed = ImageService.GetIcon ("vc-file-removed", Gtk.IconSize.Menu); + icon_conflicted = ImageService.GetIcon ("vc-file-conflicted", Gtk.IconSize.Menu); + icon_added = ImageService.GetIcon ("vc-file-added", Gtk.IconSize.Menu); + icon_controled = Xwt.Drawing.Image.FromResource ("versioned-overlay-16.png"); + }); } catch (Exception e) { LoggingService.LogError ("Error while loading icons.", e); } |