Page MenuHomePhabricator

UI: reuse object on event area and navigation graphs.
ClosedPublic

Authored by NikaWhite on Nov 23 2017, 2:21 AM.

Details

Summary

Instead adding new grids, tables, backgrounds and labels onto event
area each time when log file reopened, already exists objects will be
reused.
Navigation graphs each time when update image with graph - creates new
image instance. This was replaced with resetting data into already used
image.
On log close time instead deleting all tasks forever - they are moved
back into their caches.
This commit fixes jumping panes each time when new log file opened.
T6160

Diff Detail

Branch
master
Lint
No Linters Available
Unit
No Unit Test Coverage
Build Status
Buildable 5282
Build 5747: arc lint + arc unit
NikaWhite created this revision.Nov 23 2017, 2:21 AM
NikaWhite updated this revision to Diff 13205.Nov 28 2017, 12:05 AM

Correct reusing thread grids.

NikaWhite edited the summary of this revision. (Show Details)Nov 28 2017, 3:50 AM
Deepwarrior requested changes to this revision.Nov 28 2017, 7:52 AM

Open log.
select event
Open new log file.
After every interval change efl errors happen:

ERR<30451>:eo ../src/lib/efl/interfaces/efl_gfx.eo.c:19 efl_gfx_visible_set() Eo ID 0x400000ba8d52 is not a valid object. Current thread: main. This ID has probably been deleted or this was never a valid object ID. (domain=0, current_domain=0, local_domain=0, available_domains=[0 1    ], generation=152, id=ea3, ref=1)
## Copy & Paste the below (until EOF) into a terminal, then hit Enter

eina_btlog << EOF
/usr/local/lib/libeina.so.1      0x7fd9e70e84a9 0x7fd9e70bf000
/usr/local/lib/libeina.so.1      0x7fd9e70e91c1 0x7fd9e70bf000
/usr/local/lib/libeina.so.1      0x7fd9e70ea529 0x7fd9e70bf000
/usr/local/lib/libeo.so.1        0x7fd9e4204c65 0x7fd9e41f6000
/usr/local/lib/libeo.so.1        0x7fd9e4201193 0x7fd9e41f6000
/usr/local/lib/libefl.so.1       0x7fd9e443d24b 0x7fd9e4417000
/usr/local/lib/libefl_profiler.so        0x7fd9e7358b81 0x7fd9e7350000
/usr/local/lib/libefl_profiler.so        0x7fd9e735fc77 0x7fd9e7350000
/usr/local/lib/libeo.so.1        0x7fd9e420ae70 0x7fd9e41f6000
/usr/local/lib/libeo.so.1        0x7fd9e4207413 0x7fd9e41f6000
/usr/local/lib/libeo.so.1        0x7fd9e4207413 0x7fd9e41f6000
/usr/local/lib/libefl_profiler.so        0x7fd9e73664e5 0x7fd9e7350000
/usr/local/lib/libecore.so.1     0x7fd9e6e90be3 0x7fd9e6e54000
/usr/local/lib/libecore.so.1     0x7fd9e6e67da0 0x7fd9e6e54000
/usr/local/lib/libecore.so.1     0x7fd9e6e8db9e 0x7fd9e6e54000
/usr/local/lib/libecore.so.1     0x7fd9e6e8e349 0x7fd9e6e54000
/usr/local/lib/libecore.so.1     0x7fd9e6e73fba 0x7fd9e6e54000
/usr/local/lib/libecore.so.1     0x7fd9e6e74567 0x7fd9e6e54000
/usr/local/bin/efl_profiling_viewer      0x40278b 0x400000
/usr/local/bin/efl_profiling_viewer      0x4027f4 0x400000
/lib/x86_64-linux-gnu/libc.so.6  0x7fd9e5e6d830 0x7fd9e5e4d000
/usr/local/bin/efl_profiling_viewer      0x401a99 0x400000
EOF

Now close profiler. And segfault happens:

#0  0x00007ffff7bc9e95 in tasks_idler_enterer (data=0xb4b7b0) at /home/opiskun/efl_profiling_tool/src/lib/tasks/tasks.c:79
#1  0x00007ffff76c69ef in _ecore_call_task_cb (data=<optimized out>, func=<optimized out>) at lib/ecore/ecore_private.h:297
#2  _ecore_factorized_idle_process (data=0x62ac90, event=<optimized out>) at lib/ecore/ecore_idler.c:35
#3  0x00007ffff4a6339b in _event_callback_call (legacy_compare=0 '\000', event_info=<optimized out>, desc=0x7ffff7903c70 <_EFL_LOOP_EVENT_IDLE_ENTER>,
    pd=0x625440, obj_id=<optimized out>) at lib/eo/eo_base_class.c:1522
#4  _efl_object_event_callback_call (obj_id=<optimized out>, pd=0x625440, desc=0x7ffff7903c70 <_EFL_LOOP_EVENT_IDLE_ENTER>, event_info=<optimized out>)
    at lib/eo/eo_base_class.c:1606
#5  0x00007ffff4a5e2a3 in efl_event_callback_call (obj=0x400000000572, desc=0x7ffff7903c70 <_EFL_LOOP_EVENT_IDLE_ENTER>, event_info=event_info@entry=0x0)
    at lib/eo/eo_base_class.c:1609
#6  0x00007ffff76c68be in _ecore_idle_enterer_call (loop=<optimized out>) at lib/ecore/ecore_idle_enterer.c:48
#7  0x00007ffff76cb20c in _ecore_main_loop_iterate_internal (once_only=once_only@entry=1) at lib/ecore/ecore_main.c:2439
#8  0x00007ffff76cb442 in ecore_main_loop_iterate () at lib/ecore/ecore_main.c:1253
#9  0x00007ffff6c3a0cf in elm_quicklaunch_sub_shutdown () at lib/elementary/elm_main.c:847
#10 0x00007ffff6c3a3e5 in elm_shutdown () at lib/elementary/elm_main.c:462
#11 0x00000000004027fc in main (argc=1, argv=0x7fffffffdc28) at /home/opiskun/efl_profiling_tool/src/bin/main.c:276
Looks like all grids might be described with new struct.
src/lib/ui.c
1274

if freeing doesn't happens here, it should be called in shutdown.

This revision now requires changes to proceed.Nov 28 2017, 7:52 AM
NikaWhite updated this revision to Diff 13239.Nov 29 2017, 4:07 AM

Mark image objects with updated graph data as "dirty"

Deepwarrior edited the summary of this revision. (Show Details)Nov 29 2017, 4:27 AM
Deepwarrior requested changes to this revision.Nov 29 2017, 6:48 AM

Open log with events in different threads.
Open new log with other threads with events.
Result: excess threads in graph area

src/lib/ui.c
1274

Sorry, this was related to outdated patch.

This revision now requires changes to proceed.Nov 29 2017, 6:48 AM
NikaWhite updated this revision to Diff 13254.Nov 30 2017, 2:15 AM

Clear labels in navigation area each time when area fills with new data.

Deepwarrior accepted this revision.Dec 2 2017, 4:56 AM
This revision is now accepted and ready to land.Dec 2 2017, 4:56 AM
NikaWhite closed this revision.Dec 3 2017, 11:12 PM