X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=ltt%2Fbranches%2Fpoly%2Flttv%2Fmodules%2Fgui%2Flttvwindow%2Flttvwindow%2Flttvwindow.c;h=4f77d883a695173b97fc73db4e5bd834bac5bddc;hb=08fb203b469865535d163e6444d3cfa6ad61ac62;hp=179eab0ad157806f33bd85545ea64315d81a2d43;hpb=a998b781c5e28cb4a364ce09cd99dc1d3dbf6a06;p=lttv.git diff --git a/ltt/branches/poly/lttv/modules/gui/lttvwindow/lttvwindow/lttvwindow.c b/ltt/branches/poly/lttv/modules/gui/lttvwindow/lttvwindow/lttvwindow.c index 179eab0a..4f77d883 100644 --- a/ltt/branches/poly/lttv/modules/gui/lttvwindow/lttvwindow/lttvwindow.c +++ b/ltt/branches/poly/lttv/modules/gui/lttvwindow/lttvwindow/lttvwindow.c @@ -51,6 +51,8 @@ extern GSList * g_main_window_list; +__EXPORT gint lttvwindow_preempt_count = 0; + /* set_time_window * * It updates the time window of the tab, then calls the updatetimewindow @@ -119,7 +121,7 @@ void set_current_position(Tab *tab, const LttvTracesetContextPosition *pos) g_assert(lttv_iattribute_find_by_path(tab->attributes, "hooks/updatecurrentposition", LTTV_POINTER, &value)); tmp = (LttvHooks*)*(value.v_pointer); - if(tmp != NULL) lttv_hooks_call(tmp, &pos); + if(tmp != NULL) lttv_hooks_call(tmp, pos); } void add_toolbar_constructor(MainWindow *mw, LttvToolbarClosure *toolbar_c) @@ -203,7 +205,6 @@ void remove_toolbar_constructor(MainWindow *mw, lttvwindow_viewer_constructor vi LttvIAttribute *attributes = mw->attributes; LttvAttributeValue value; LttvToolbars * instance_toolbar; - lttvwindow_viewer_constructor constructor; GtkWidget * tool_menu_title_menu, *widget; g_assert(lttv_iattribute_find_by_path(attributes, @@ -224,9 +225,7 @@ void remove_menu_constructor(MainWindow *mw, lttvwindow_viewer_constructor viewe LttvIAttribute *attributes = mw->attributes; LttvAttributeValue value; LttvMenus * instance_menu; - lttvwindow_viewer_constructor constructor; GtkWidget * tool_menu_title_menu, *widget; - LttvMenuClosure *menu_item_i; g_assert(lttv_iattribute_find_by_path(attributes, "viewers/menu", LTTV_POINTER, &value)); @@ -261,7 +260,7 @@ void remove_menu_constructor(MainWindow *mw, lttvwindow_viewer_constructor viewe * @param view_constructor constructor of the viewer. */ -void lttvwindow_register_constructor +__EXPORT void lttvwindow_register_constructor (char * name, char * menu_path, char * menu_text, @@ -312,13 +311,16 @@ void lttvwindow_register_constructor } { LttvAttribute *attribute; - g_assert(attribute = - LTTV_ATTRIBUTE(lttv_iattribute_find_subdir( - LTTV_IATTRIBUTE(attributes_global), - LTTV_VIEWER_CONSTRUCTORS))); + gboolean result; + + attribute = LTTV_ATTRIBUTE(lttv_iattribute_find_subdir( + LTTV_IATTRIBUTE(attributes_global), + LTTV_VIEWER_CONSTRUCTORS)); + g_assert(attribute); - g_assert(lttv_iattribute_find_by_path(LTTV_IATTRIBUTE(attribute), - name, LTTV_POINTER, &value)); + result = lttv_iattribute_find_by_path(LTTV_IATTRIBUTE(attribute), + name, LTTV_POINTER, &value); + g_assert(result); *(value.v_pointer) = view_constructor; @@ -337,13 +339,14 @@ void lttvwindow_register_constructor */ -void lttvwindow_unregister_constructor +__EXPORT void lttvwindow_unregister_constructor (lttvwindow_viewer_constructor view_constructor) { LttvIAttribute *attributes_global = LTTV_IATTRIBUTE(lttv_global_attributes()); LttvToolbars * toolbar; LttvMenus * menu; LttvAttributeValue value; + gboolean is_named; g_assert(lttv_iattribute_find_by_path(attributes_global, "viewers/toolbar", LTTV_POINTER, &value)); @@ -369,10 +372,10 @@ void lttvwindow_unregister_constructor { LttvAttribute *attribute; - g_assert(attribute = - LTTV_ATTRIBUTE(lttv_iattribute_find_subdir( - LTTV_IATTRIBUTE(attributes_global), - LTTV_VIEWER_CONSTRUCTORS))); + attribute = LTTV_ATTRIBUTE(lttv_iattribute_find_subdir( + LTTV_IATTRIBUTE(attributes_global), + LTTV_VIEWER_CONSTRUCTORS)); + g_assert(attribute); guint num = lttv_iattribute_get_number(LTTV_IATTRIBUTE(attribute)); guint i; @@ -381,7 +384,8 @@ void lttvwindow_unregister_constructor LttvAttributeType type; for(i=0;ievents_requests = g_slist_append(tab->events_requests, events_request); if(!tab->events_request_pending) { /* Redraw has +20 priority. We want to let the redraw be done while we do - * our job. */ - g_idle_add_full((G_PRIORITY_HIGH_IDLE + 21), + * our job. Mathieu : test with high prio higher than events for better + * scrolling. */ + //g_idle_add_full((G_PRIORITY_HIGH_IDLE + 21), + g_idle_add_full((G_PRIORITY_DEFAULT + 2), (GSourceFunc)execute_events_requests, tab, NULL); @@ -964,7 +964,7 @@ gint find_viewer (const EventsRequest *a, gconstpointer b) } -void lttvwindow_events_request_remove_all(Tab *tab, +__EXPORT void lttvwindow_events_request_remove_all(Tab *tab, gconstpointer viewer) { GSList *element = tab->events_requests; @@ -993,6 +993,27 @@ void lttvwindow_events_request_remove_all(Tab *tab, } + +/** + * Function to see if there are events request pending. + * + * It tells if events requests are pending. Useful for checks in some events, + * i.e. detailed event list scrolling. + * + * @param tab the tab the viewer belongs to. + * @param viewer a pointer to the viewer data structure + * @return : TRUE is events requests are pending, else FALSE. + */ + +__EXPORT gboolean lttvwindow_events_request_pending(Tab *tab) +{ + GSList *element = tab->events_requests; + + if(element == NULL) return FALSE; + else return TRUE; +} + + /** * Function to get the current time interval shown on the current tab. * It will be called by a viewer's hook function to update the @@ -1002,7 +1023,7 @@ void lttvwindow_events_request_remove_all(Tab *tab, * @return time window. */ -TimeWindow lttvwindow_get_time_window(Tab *tab) +__EXPORT TimeWindow lttvwindow_get_time_window(Tab *tab) { return tab->time_window; } @@ -1016,7 +1037,7 @@ TimeWindow lttvwindow_get_time_window(Tab *tab) * @return time */ -LttTime lttvwindow_get_current_time(Tab *tab) +__EXPORT LttTime lttvwindow_get_current_time(Tab *tab) { return tab->current_time; } @@ -1024,15 +1045,14 @@ LttTime lttvwindow_get_current_time(Tab *tab) /** * Function to get the filter of the current tab. - * @param main_win, the main window the viewer belongs to. * @param filter, a pointer to a filter. + * + * returns the current filter */ -#if 0 -LttvFilter *lttvwindow_get_filter(Tab *tab) +__EXPORT LttvFilter *lttvwindow_get_filter(Tab *tab) { - return tab->filter; + return g_object_get_data(G_OBJECT(tab->vbox), "filter"); } -#endif //0 /** * Function to set the filter of the current tab. @@ -1046,14 +1066,13 @@ LttvFilter *lttvwindow_get_filter(Tab *tab) * @param main_win, the main window the viewer belongs to. * @param filter, a pointer to a filter. */ - void lttvwindow_report_filter(Tab *tab, LttvFilter *filter) { LttvAttributeValue value; LttvHooks * tmp; - lttv_filter_destroy(tab->filter); - tab->filter = filter; + //lttv_filter_destroy(tab->filter); + //tab->filter = filter; g_assert(lttv_iattribute_find_by_path(tab->attributes, "hooks/updatefilter", LTTV_POINTER, &value)); @@ -1069,13 +1088,12 @@ void lttvwindow_report_filter(Tab *tab, LttvFilter *filter) * @param tab viewer's tab */ -LttvTracesetStats* lttvwindow_get_traceset_stats(Tab *tab) +__EXPORT LttvTracesetStats* lttvwindow_get_traceset_stats(Tab *tab) { return tab->traceset_info->traceset_context; } - -LttvTracesetContext* lttvwindow_get_traceset_context(Tab *tab) +__EXPORT LttvTracesetContext* lttvwindow_get_traceset_context(Tab *tab) { return (LttvTracesetContext*)tab->traceset_info->traceset_context; } @@ -1092,9 +1110,7 @@ void events_request_free(EventsRequest *events_request) if(events_request->hooks != NULL) { guint i; GArray *hooks = events_request->hooks; - for(i=0;ilen;i++) { - lttv_trace_hook_destroy(&g_array_index(hooks, LttvTraceHook, i)); - } + lttv_trace_hook_remove_all(hooks); g_array_free(events_request->hooks, TRUE); } if(events_request->before_chunk_traceset != NULL) @@ -1122,3 +1138,9 @@ void events_request_free(EventsRequest *events_request) } + +__EXPORT GtkWidget *main_window_get_widget(Tab *tab) +{ + return tab->mw->mwindow; +} +