aboutsummaryrefslogtreecommitdiffstats
path: root/lib/observer/src/observer_lib.erl
diff options
context:
space:
mode:
authorDan Gudmundsson <[email protected]>2014-02-14 10:01:05 +0100
committerDan Gudmundsson <[email protected]>2014-02-14 10:01:05 +0100
commit9f698ad63586735de169fb514f22eea5164e173b (patch)
tree019e1297c9a00189999aa0d8437baac4c14e07c5 /lib/observer/src/observer_lib.erl
parentc0667d05f1295930dacc80f82b985183fd800961 (diff)
parentb07eae7aefeff5d42e11c319c660f1f2d2cac5fd (diff)
downloadotp-9f698ad63586735de169fb514f22eea5164e173b.tar.gz
otp-9f698ad63586735de169fb514f22eea5164e173b.tar.bz2
otp-9f698ad63586735de169fb514f22eea5164e173b.zip
Merge branch 'dgud/observer_fixes'
* dgud/observer_fixes: observer: catch progressbar errors observer: Fix observer crash when closing crashdumpviewer observer: Fix binary links observer: Fix crash when clicking on pid inside a html-term
Diffstat (limited to 'lib/observer/src/observer_lib.erl')
-rw-r--r--lib/observer/src/observer_lib.erl12
1 files changed, 9 insertions, 3 deletions
diff --git a/lib/observer/src/observer_lib.erl b/lib/observer/src/observer_lib.erl
index e0f7bf482b..cedaf7d2b8 100644
--- a/lib/observer/src/observer_lib.erl
+++ b/lib/observer/src/observer_lib.erl
@@ -699,7 +699,9 @@ progress_handler(Caller,Env,Title,Str) ->
register(?progress_handler,self()),
wx:set_env(Env),
PD = progress_dialog(Env,Title,Str),
- progress_loop(Title,PD,Caller).
+ try progress_loop(Title,PD,Caller)
+ catch closed -> normal end.
+
progress_loop(Title,PD,Caller) ->
receive
{progress,{ok,done}} -> % to make wait_for_progress/0 return
@@ -738,8 +740,12 @@ progress_dialog(_Env,Title,Str) ->
PD.
update_progress(PD,Value) ->
- wxProgressDialog:update(PD,Value).
+ try wxProgressDialog:update(PD,Value)
+ catch _:_ -> throw(closed) %% Port or window have died
+ end.
update_progress_text(PD,Text) ->
- wxProgressDialog:update(PD,0,[{newmsg,Text}]).
+ try wxProgressDialog:update(PD,0,[{newmsg,Text}])
+ catch _:_ -> throw(closed) %% Port or window have died
+ end.
finish_progress(PD) ->
wxProgressDialog:destroy(PD).