aboutsummaryrefslogtreecommitdiffstats
path: root/lib/observer/src/cdv_detail_wx.erl
diff options
context:
space:
mode:
authorSiri Hansen <[email protected]>2018-01-10 17:49:35 +0100
committerSiri Hansen <[email protected]>2018-01-10 17:49:35 +0100
commitebc81123499da2e0fa03f8eb989dfeb785a04bd3 (patch)
tree36e4aee5f84adeb3322956e7a2e40e641b5cb9b9 /lib/observer/src/cdv_detail_wx.erl
parentdf8499995b4994d3f85f4b80fc3c2cf941a99cdc (diff)
downloadotp-ebc81123499da2e0fa03f8eb989dfeb785a04bd3.tar.gz
otp-ebc81123499da2e0fa03f8eb989dfeb785a04bd3.tar.bz2
otp-ebc81123499da2e0fa03f8eb989dfeb785a04bd3.zip
[observer] Improve performance for many links or monitors
When a process has many links and/or monitors, it could earlier take very long time to display the process information window. This is now improved by only showing a few links and monitors, and then an link named "more..." to expand the rest. Reading of the "Link list" from a crashdump is also improved.
Diffstat (limited to 'lib/observer/src/cdv_detail_wx.erl')
-rw-r--r--lib/observer/src/cdv_detail_wx.erl11
1 files changed, 10 insertions, 1 deletions
diff --git a/lib/observer/src/cdv_detail_wx.erl b/lib/observer/src/cdv_detail_wx.erl
index f6d282638a..6c4739042b 100644
--- a/lib/observer/src/cdv_detail_wx.erl
+++ b/lib/observer/src/cdv_detail_wx.erl
@@ -48,6 +48,7 @@ init([Id, Data, ParentFrame, Callback, App, Parent]) ->
display_progress(ParentFrame,App),
case Callback:get_details(Id, Data) of
{ok,Details} ->
+ display_progress_pulse(Callback,Id),
init(Id,ParentFrame,Callback,App,Parent,Details);
{yes_no, Info, Fun} ->
destroy_progress(App),
@@ -69,8 +70,16 @@ display_progress(ParentFrame,cdv) ->
"Reading data");
display_progress(_,_) ->
ok.
+
+%% Display pulse while creating process detail page with much data
+display_progress_pulse(cdv_proc_cb,Pid) ->
+ observer_lib:report_progress({ok,"Displaying data for "++Pid}),
+ observer_lib:report_progress({ok,start_pulse});
+display_progress_pulse(_,_) ->
+ ok.
+
destroy_progress(cdv) ->
- observer_lib:destroy_progress_dialog();
+ observer_lib:sync_destroy_progress_dialog();
destroy_progress(_) ->
ok.