diff options
author | Steven Rostedt <srostedt@redhat.com> | 2010-06-09 17:00:12 -0400 |
---|---|---|
committer | Steven Rostedt <rostedt@goodmis.org> | 2010-06-09 17:00:12 -0400 |
commit | 84db8a11ec76e2e01fe299514e18b0558cb6416d (patch) | |
tree | 50ae86839e9f13607a9e341b9a81082651926b5e | |
parent | bfcfe4834608b06ffecab2dc185e44669e48f50d (diff) |
kernelshark: Clean up CPU dialog code
Use gtk_dialog_run() and examine the results instead of having
to create a helper structure that is allocated and passed back to
signals.
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
-rw-r--r-- | trace-filter.c | 83 |
1 files changed, 27 insertions, 56 deletions
diff --git a/trace-filter.c b/trace-filter.c index b7ca5c3..2cc0629 100644 --- a/trace-filter.c +++ b/trace-filter.c | |||
@@ -58,11 +58,6 @@ int id_cmp(const void *a, const void *b) | |||
58 | return 0; | 58 | return 0; |
59 | } | 59 | } |
60 | 60 | ||
61 | struct dialog_helper { | ||
62 | GtkWidget *dialog; | ||
63 | gpointer data; | ||
64 | }; | ||
65 | |||
66 | /** | 61 | /** |
67 | * trace_array_add - allocate and add an int to an array. | 62 | * trace_array_add - allocate and add an int to an array. |
68 | * @array: address of array to allocate | 63 | * @array: address of array to allocate |
@@ -1675,8 +1670,6 @@ struct cpu_filter_helper { | |||
1675 | guint64 *cpu_mask; | 1670 | guint64 *cpu_mask; |
1676 | GtkWidget **buttons; | 1671 | GtkWidget **buttons; |
1677 | int cpus; | 1672 | int cpus; |
1678 | trace_filter_cpu_cb_func func; | ||
1679 | gpointer data; | ||
1680 | }; | 1673 | }; |
1681 | 1674 | ||
1682 | static void destroy_cpu_helper(struct cpu_filter_helper *cpu_helper) | 1675 | static void destroy_cpu_helper(struct cpu_filter_helper *cpu_helper) |
@@ -1686,40 +1679,6 @@ static void destroy_cpu_helper(struct cpu_filter_helper *cpu_helper) | |||
1686 | g_free(cpu_helper); | 1679 | g_free(cpu_helper); |
1687 | } | 1680 | } |
1688 | 1681 | ||
1689 | /* Callback for the clicked signal of the CPUS filter button */ | ||
1690 | static void | ||
1691 | cpu_dialog_response (gpointer data, gint response_id) | ||
1692 | { | ||
1693 | struct dialog_helper *helper = data; | ||
1694 | struct cpu_filter_helper *cpu_helper = helper->data; | ||
1695 | guint64 *cpu_mask = NULL; | ||
1696 | |||
1697 | switch (response_id) { | ||
1698 | case GTK_RESPONSE_ACCEPT: | ||
1699 | |||
1700 | if (!cpu_helper->allcpus) { | ||
1701 | cpu_mask = cpu_helper->cpu_mask; | ||
1702 | cpu_helper->cpu_mask = NULL; | ||
1703 | } | ||
1704 | |||
1705 | cpu_helper->func(TRUE, cpu_helper->allcpus, cpu_mask, cpu_helper->data); | ||
1706 | break; | ||
1707 | |||
1708 | case GTK_RESPONSE_REJECT: | ||
1709 | cpu_helper->func(FALSE, FALSE, NULL, cpu_helper->data); | ||
1710 | break; | ||
1711 | default: | ||
1712 | break; | ||
1713 | }; | ||
1714 | |||
1715 | g_free(cpu_mask); | ||
1716 | |||
1717 | gtk_widget_destroy(GTK_WIDGET(helper->dialog)); | ||
1718 | |||
1719 | destroy_cpu_helper(helper->data); | ||
1720 | g_free(helper); | ||
1721 | } | ||
1722 | |||
1723 | #define CPU_ALL_CPUS_STR "All CPUs" | 1682 | #define CPU_ALL_CPUS_STR "All CPUs" |
1724 | 1683 | ||
1725 | void cpu_toggle(gpointer data, GtkWidget *widget) | 1684 | void cpu_toggle(gpointer data, GtkWidget *widget) |
@@ -1771,8 +1730,8 @@ void cpu_toggle(gpointer data, GtkWidget *widget) | |||
1771 | void trace_filter_cpu_dialog(gboolean all_cpus, guint64 *cpus_selected, gint cpus, | 1730 | void trace_filter_cpu_dialog(gboolean all_cpus, guint64 *cpus_selected, gint cpus, |
1772 | trace_filter_cpu_cb_func func, gpointer data) | 1731 | trace_filter_cpu_cb_func func, gpointer data) |
1773 | { | 1732 | { |
1774 | struct dialog_helper *helper; | ||
1775 | struct cpu_filter_helper *cpu_helper; | 1733 | struct cpu_filter_helper *cpu_helper; |
1734 | guint64 *cpu_mask = NULL; | ||
1776 | GtkWidget *dialog; | 1735 | GtkWidget *dialog; |
1777 | GtkWidget *scrollwin; | 1736 | GtkWidget *scrollwin; |
1778 | GtkWidget *viewport; | 1737 | GtkWidget *viewport; |
@@ -1784,15 +1743,11 @@ void trace_filter_cpu_dialog(gboolean all_cpus, guint64 *cpus_selected, gint cpu | |||
1784 | gint width, height; | 1743 | gint width, height; |
1785 | gint allset; | 1744 | gint allset; |
1786 | gint cpu; | 1745 | gint cpu; |
1787 | 1746 | int result; | |
1788 | helper = g_malloc(sizeof(*helper)); | ||
1789 | g_assert(helper != NULL); | ||
1790 | 1747 | ||
1791 | cpu_helper = g_new0(typeof(*cpu_helper), 1); | 1748 | cpu_helper = g_new0(typeof(*cpu_helper), 1); |
1792 | g_assert(cpu_helper != NULL); | 1749 | g_assert(cpu_helper != NULL); |
1793 | 1750 | ||
1794 | helper->data = cpu_helper; | ||
1795 | |||
1796 | /* --- Make dialog window --- */ | 1751 | /* --- Make dialog window --- */ |
1797 | 1752 | ||
1798 | dialog = gtk_dialog_new_with_buttons("Filter CPUS", | 1753 | dialog = gtk_dialog_new_with_buttons("Filter CPUS", |
@@ -1804,19 +1759,10 @@ void trace_filter_cpu_dialog(gboolean all_cpus, guint64 *cpus_selected, gint cpu | |||
1804 | GTK_RESPONSE_REJECT, | 1759 | GTK_RESPONSE_REJECT, |
1805 | NULL); | 1760 | NULL); |
1806 | 1761 | ||
1807 | helper->dialog = dialog; | ||
1808 | |||
1809 | cpu_helper->cpus = cpus; | 1762 | cpu_helper->cpus = cpus; |
1810 | cpu_helper->buttons = g_new0(GtkWidget *, cpus + 1); | 1763 | cpu_helper->buttons = g_new0(GtkWidget *, cpus + 1); |
1811 | g_assert(cpu_helper->buttons); | 1764 | g_assert(cpu_helper->buttons); |
1812 | 1765 | ||
1813 | cpu_helper->func = func; | ||
1814 | cpu_helper->data = data; | ||
1815 | |||
1816 | g_signal_connect_swapped (dialog, "response", | ||
1817 | G_CALLBACK (cpu_dialog_response), | ||
1818 | (gpointer) helper); | ||
1819 | |||
1820 | scrollwin = gtk_scrolled_window_new(NULL, NULL); | 1766 | scrollwin = gtk_scrolled_window_new(NULL, NULL); |
1821 | gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrollwin), | 1767 | gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrollwin), |
1822 | GTK_POLICY_AUTOMATIC, | 1768 | GTK_POLICY_AUTOMATIC, |
@@ -1908,6 +1854,31 @@ void trace_filter_cpu_dialog(gboolean all_cpus, guint64 *cpus_selected, gint cpu | |||
1908 | width, height); | 1854 | width, height); |
1909 | 1855 | ||
1910 | gtk_widget_show_all(dialog); | 1856 | gtk_widget_show_all(dialog); |
1857 | |||
1858 | result = gtk_dialog_run(GTK_DIALOG(dialog)); | ||
1859 | switch (result) { | ||
1860 | case GTK_RESPONSE_ACCEPT: | ||
1861 | |||
1862 | if (!cpu_helper->allcpus) { | ||
1863 | cpu_mask = cpu_helper->cpu_mask; | ||
1864 | cpu_helper->cpu_mask = NULL; | ||
1865 | } | ||
1866 | |||
1867 | func(TRUE, cpu_helper->allcpus, cpu_mask, data); | ||
1868 | break; | ||
1869 | |||
1870 | case GTK_RESPONSE_REJECT: | ||
1871 | func(FALSE, FALSE, NULL, data); | ||
1872 | break; | ||
1873 | default: | ||
1874 | break; | ||
1875 | }; | ||
1876 | |||
1877 | g_free(cpu_mask); | ||
1878 | |||
1879 | gtk_widget_destroy(dialog); | ||
1880 | |||
1881 | destroy_cpu_helper(cpu_helper); | ||
1911 | } | 1882 | } |
1912 | 1883 | ||
1913 | static void add_system_str(gchar ***systems, char *system, int count) | 1884 | static void add_system_str(gchar ***systems, char *system, int count) |