projects
/
lttv.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
correct inlining of hook by id get
[lttv.git]
/
ltt
/
branches
/
poly
/
lttv
/
modules
/
gui
/
lttvwindow
/
lttvwindow
/
lttvwindowtraces.c
diff --git
a/ltt/branches/poly/lttv/modules/gui/lttvwindow/lttvwindow/lttvwindowtraces.c
b/ltt/branches/poly/lttv/modules/gui/lttvwindow/lttvwindow/lttvwindowtraces.c
index 1ce869990fe2e10ee69ad30f18e4b7773daf913d..05c24b7a7f7cfadadf4bb696817725d558cb7b30 100644
(file)
--- a/
ltt/branches/poly/lttv/modules/gui/lttvwindow/lttvwindow/lttvwindowtraces.c
+++ b/
ltt/branches/poly/lttv/modules/gui/lttvwindow/lttvwindow/lttvwindowtraces.c
@@
-255,9
+255,10
@@
void lttvwindowtraces_remove_trace(LttvTrace *trace)
g_object_unref(tss);
lttv_iattribute_remove_by_name(LTTV_IATTRIBUTE(l_attribute),
LTTV_COMPUTATION_TRACESET_CONTEXT);
g_object_unref(tss);
lttv_iattribute_remove_by_name(LTTV_IATTRIBUTE(l_attribute),
LTTV_COMPUTATION_TRACESET_CONTEXT);
- lttv_traceset_destroy(ts);
lttv_iattribute_remove_by_name(LTTV_IATTRIBUTE(l_attribute),
LTTV_COMPUTATION_TRACESET);
lttv_iattribute_remove_by_name(LTTV_IATTRIBUTE(l_attribute),
LTTV_COMPUTATION_TRACESET);
+ /* Destroy the traceset and the trace also */
+ lttv_traceset_destroy(ts);
/* finally, remove the global attribute */
lttv_attribute_remove(attribute, i);
/* finally, remove the global attribute */
lttv_attribute_remove(attribute, i);
@@
-548,7
+549,8
@@
void lttvwindowtraces_background_notify_remove(gpointer owner)
/* Background processing helper functions */
void lttvwindowtraces_add_computation_hooks(LttvAttributeName module_name,
/* Background processing helper functions */
void lttvwindowtraces_add_computation_hooks(LttvAttributeName module_name,
- LttvTracesetContext *tsc)
+ LttvTracesetContext *tsc,
+ LttvHooks *hook_adder)
{
LttvAttribute *g_attribute = lttv_global_attributes();
LttvAttribute *module_attribute;
{
LttvAttribute *g_attribute = lttv_global_attributes();
LttvAttribute *module_attribute;
@@
-611,7
+613,9
@@
void lttvwindowtraces_add_computation_hooks(LttvAttributeName module_name,
LTTV_HOOK_ADDER,
&value);
if(type == LTTV_POINTER) {
LTTV_HOOK_ADDER,
&value);
if(type == LTTV_POINTER) {
- lttv_hooks_call((LttvHooks*)*(value.v_pointer), (gpointer)tss);
+ //lttv_hooks_call((LttvHooks*)*(value.v_pointer), (gpointer)tss);
+ if(hook_adder != NULL)
+ lttv_hooks_add_list(hook_adder, (LttvHooks*)*(value.v_pointer));
}
}
@@
-626,7
+630,8
@@
void lttvwindowtraces_add_computation_hooks(LttvAttributeName module_name,
}
void lttvwindowtraces_remove_computation_hooks(LttvAttributeName module_name,
}
void lttvwindowtraces_remove_computation_hooks(LttvAttributeName module_name,
- LttvTracesetContext *tsc)
+ LttvTracesetContext *tsc,
+ LttvHooks *hook_remover)
{
LttvAttribute *g_attribute = lttv_global_attributes();
LttvAttribute *module_attribute;
{
LttvAttribute *g_attribute = lttv_global_attributes();
LttvAttribute *module_attribute;
@@
-695,7
+700,9
@@
void lttvwindowtraces_remove_computation_hooks(LttvAttributeName module_name,
LTTV_HOOK_REMOVER,
&value);
if(type == LTTV_POINTER) {
LTTV_HOOK_REMOVER,
&value);
if(type == LTTV_POINTER) {
- lttv_hooks_call((LttvHooks*)*(value.v_pointer), (gpointer)tss);
+ //lttv_hooks_call((LttvHooks*)*(value.v_pointer), (gpointer)tss);
+ if(hook_remover != NULL)
+ lttv_hooks_add_list(hook_remover, (LttvHooks*)*(value.v_pointer));
}
}
}
}
@@
-997,6
+1004,7
@@
gboolean lttvwindowtraces_process_pending_requests(LttvTrace *trace)
{
GSList *iter = *list_in;
{
GSList *iter = *list_in;
+ LttvHooks *hook_adder = lttv_hooks_new();
/* - for each request in list_in */
while(iter != NULL) {
/* - for each request in list_in */
while(iter != NULL) {
@@
-1004,16
+1012,19
@@
gboolean lttvwindowtraces_process_pending_requests(LttvTrace *trace)
/*- Call before chunk hooks for list_in*/
/*- add hooks to context*/
lttvwindowtraces_add_computation_hooks(bg_req->module_name,
/*- Call before chunk hooks for list_in*/
/*- add hooks to context*/
lttvwindowtraces_add_computation_hooks(bg_req->module_name,
- tsc);
+ tsc,
+ hook_adder);
iter = g_slist_next(iter);
}
iter = g_slist_next(iter);
}
+ lttv_hooks_call(hook_adder,tsc);
+ lttv_hooks_destroy(hook_adder);
}
}
/* 2. call process traceset middle for a chunk */
{
/*(assert list_in is not empty! : should not even be called in that case)*/
}
}
/* 2. call process traceset middle for a chunk */
{
/*(assert list_in is not empty! : should not even be called in that case)*/
- LttTime end =
{ G_MAXUINT, G_MAXUINT }
;
+ LttTime end =
ltt_time_infinite
;
g_assert(g_slist_length(*list_in) != 0);
lttv_process_traceset_middle(tsc, end, CHUNK_NUM_EVENTS, NULL);
g_assert(g_slist_length(*list_in) != 0);
lttv_process_traceset_middle(tsc, end, CHUNK_NUM_EVENTS, NULL);
@@
-1024,6
+1035,7
@@
gboolean lttvwindowtraces_process_pending_requests(LttvTrace *trace)
/* 3.1 call after_chunk hooks for list_in */
{
GSList *iter = *list_in;
/* 3.1 call after_chunk hooks for list_in */
{
GSList *iter = *list_in;
+ LttvHooks *hook_remover = lttv_hooks_new();
/* - for each request in list_in */
while(iter != NULL) {
/* - for each request in list_in */
while(iter != NULL) {
@@
-1031,9
+1043,12
@@
gboolean lttvwindowtraces_process_pending_requests(LttvTrace *trace)
/* - Call after chunk hooks for list_in */
/* - remove hooks from context */
lttvwindowtraces_remove_computation_hooks(bg_req->module_name,
/* - Call after chunk hooks for list_in */
/* - remove hooks from context */
lttvwindowtraces_remove_computation_hooks(bg_req->module_name,
- tsc);
+ tsc,
+ hook_remover);
iter = g_slist_next(iter);
}
iter = g_slist_next(iter);
}
+ lttv_hooks_call(hook_remover,tsc);
+ lttv_hooks_destroy(hook_remover);
}
/* 3.2 for each notify_in */
}
/* 3.2 for each notify_in */
@@
-1174,6
+1189,11
@@
gboolean lttvwindowtraces_process_pending_requests(LttvTrace *trace)
}
}
}
}
}
}
+ {
+ /* - reset the context */
+ LTTV_TRACESET_CONTEXT_GET_CLASS(tsc)->fini(tsc);
+ LTTV_TRACESET_CONTEXT_GET_CLASS(tsc)->init(tsc,ts);
+ }
/* - if list_out is empty */
if(g_slist_length(*list_out) == 0) {
/* - return FALSE (scheduler stopped) */
/* - if list_out is empty */
if(g_slist_length(*list_out) == 0) {
/* - return FALSE (scheduler stopped) */
This page took
0.023933 seconds
and
4
git commands to generate.