aboutsummaryrefslogtreecommitdiffstats
path: root/gtk
diff options
context:
space:
mode:
authorGerald Combs <gerald@wireshark.org>2011-11-07 23:42:53 +0000
committerGerald Combs <gerald@wireshark.org>2011-11-07 23:42:53 +0000
commit7d442f4c22c58a970a6d00c2affac1659cdb81f6 (patch)
tree560cbb5c5df3cf623f7d3e0eb792ec9202a0e8a8 /gtk
parent60247a582b5852d7c84f500051d479893d8dc0c6 (diff)
Change the use of threads from "mostly always, depending on your
configure options and Gtk+ and GLib versions" to "always". svn path=/trunk/; revision=39751
Diffstat (limited to 'gtk')
-rw-r--r--gtk/capture_dlg.c55
-rw-r--r--gtk/capture_if_dlg.c22
-rw-r--r--gtk/main.c8
-rw-r--r--gtk/main.h4
-rw-r--r--gtk/main_welcome.c40
-rw-r--r--gtk/prefs_capture.c12
-rw-r--r--gtk/prefs_taps.c7
7 files changed, 18 insertions, 130 deletions
diff --git a/gtk/capture_dlg.c b/gtk/capture_dlg.c
index 89c587d67c..ded8a320f5 100644
--- a/gtk/capture_dlg.c
+++ b/gtk/capture_dlg.c
@@ -293,12 +293,10 @@ typedef struct capture_filter_check {
/* We could make this smarter by caching results */
capture_filter_check_t cfc_data;
-#ifdef USE_THREADS
GMutex *pcap_compile_mtx = NULL;
GCond *cfc_data_cond = NULL;
GMutex *cfc_data_mtx = NULL;
GThread *cfc_thread = NULL;
-#endif
#if 0
#define DEBUG_SYNTAX_CHECK(state1, state2) g_warning("CF state %s -> %s : %s", state1, state2, cfc_data.filter_text)
@@ -311,28 +309,25 @@ check_capture_filter_syntax(void *data _U_) {
struct bpf_program fcode;
int pc_err;
-#ifdef USE_THREADS
while (1) {
g_mutex_lock(cfc_data_mtx);
while (!cfc_data.filter_text || cfc_data.state != CFC_PENDING) {
/* Do we really need to use a mutex here? We only have one thread... */
g_cond_wait(cfc_data_cond, cfc_data_mtx);
}
-#endif
cfc_data.state = CFC_UNKNOWN;
DEBUG_SYNTAX_CHECK("pending", "unknown");
-#ifdef USE_THREADS
g_mutex_unlock(cfc_data_mtx);
g_mutex_lock(pcap_compile_mtx);
-#endif
+
/* pcap_compile_nopcap will not alter the filter string, so the (char *) cast is "safe" */
pc_err = pcap_compile_nopcap(DUMMY_SNAPLENGTH /* use a dummy snaplength for syntax-checking */,
cfc_data.dlt, &fcode, cfc_data.filter_text, 1 /* Do optimize */,
DUMMY_NETMASK /* use a dummy netmask for syntax-checking */);
-#ifdef USE_THREADS
+
g_mutex_unlock(pcap_compile_mtx);
g_mutex_lock(cfc_data_mtx);
-#endif
+
if (cfc_data.state == CFC_UNKNOWN) { /* No more input came in */
if (pc_err) {
DEBUG_SYNTAX_CHECK("unknown", "known bad");
@@ -342,10 +337,8 @@ check_capture_filter_syntax(void *data _U_) {
cfc_data.state = CFC_VALID;
}
}
-#ifdef USE_THREADS
g_mutex_unlock(cfc_data_mtx);
}
-#endif
return NULL;
}
@@ -355,9 +348,8 @@ update_capture_filter_te(gpointer data _U_) {
if (!prefs.capture_syntax_check_filter)
return TRUE;
-#ifdef USE_THREADS
g_mutex_lock(cfc_data_mtx);
-#endif
+
if (cfc_data.filter_text && cfc_data.filter_te) {
if (cfc_data.state == CFC_VALID) {
colorize_filter_te_as_valid(cfc_data.filter_te);
@@ -377,9 +369,7 @@ update_capture_filter_te(gpointer data _U_) {
cfc_data.state = CFC_PENDING;
}
}
-#ifdef USE_THREADS
g_mutex_unlock(cfc_data_mtx);
-#endif
return TRUE;
}
@@ -389,13 +379,11 @@ void capture_filter_init(void) {
cfc_data.filter_text = NULL;
cfc_data.filter_te = NULL;
cfc_data.state = CFC_PENDING;
-#ifdef USE_THREADS
pcap_compile_mtx = g_mutex_new();
cfc_data_cond = g_cond_new();
cfc_data_mtx = g_mutex_new();
g_timeout_add(200, update_capture_filter_te, NULL);
g_thread_create(check_capture_filter_syntax, NULL, FALSE, NULL);
-#endif
}
static void
@@ -431,9 +419,7 @@ capture_filter_check_syntax_cb(GtkWidget *w _U_, gpointer user_data _U_)
return;
}
-#ifdef USE_THREADS
g_mutex_lock(cfc_data_mtx);
-#endif
/* Ruthlessly clobber the current state. */
if (cfc_data.filter_text != NULL) {
g_free(cfc_data.filter_text);
@@ -442,21 +428,14 @@ capture_filter_check_syntax_cb(GtkWidget *w _U_, gpointer user_data _U_)
cfc_data.filter_te = filter_te;
cfc_data.state = CFC_PENDING;
DEBUG_SYNTAX_CHECK("?", "pending");
-#ifdef USE_THREADS
g_cond_signal(cfc_data_cond);
g_mutex_unlock(cfc_data_mtx);
-#else
- check_capture_filter_syntax(NULL);
- update_capture_filter_te(NULL);
-#endif
}
static void
capture_filter_destroy_cb(GtkWidget *w _U_, gpointer user_data _U_)
{
-#ifdef USE_THREADS
g_mutex_lock(cfc_data_mtx);
-#endif
/* Reset the current state to idle. */
if (cfc_data.filter_text != NULL) {
g_free(cfc_data.filter_text);
@@ -464,9 +443,7 @@ capture_filter_destroy_cb(GtkWidget *w _U_, gpointer user_data _U_)
cfc_data.filter_text = NULL;
cfc_data.filter_te = NULL;
cfc_data.state = CFC_PENDING;
-#ifdef USE_THREADS
g_mutex_unlock(cfc_data_mtx);
-#endif
}
#define TIME_UNIT_SECOND 0
@@ -1638,18 +1615,14 @@ capture_filter_compile_cb(GtkWidget *w _U_, gpointer user_data _U_)
pd = pcap_open_dead(dlt, DUMMY_SNAPLENGTH);
filter_cm = g_object_get_data(G_OBJECT(opt_edit_w), E_CFILTER_CM_KEY);
filter_text = gtk_combo_box_text_get_active_text (GTK_COMBO_BOX_TEXT(filter_cm));
-#ifdef USE_THREADS
g_mutex_lock(pcap_compile_mtx);
-#endif
/* pcap_compile will not alter the filter string, so the (char *) cast is "safe" */
#ifdef PCAP_NETMASK_UNKNOWN
if (pcap_compile(pd, &fcode, (char *)filter_text, 1 /* Do optimize */, PCAP_NETMASK_UNKNOWN) < 0) {
#else
if (pcap_compile(pd, &fcode, (char *)filter_text, 1 /* Do optimize */, 0) < 0) {
#endif
-#ifdef USE_THREADS
g_mutex_unlock(pcap_compile_mtx);
-#endif
simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "%s", pcap_geterr(pd));
} else {
GString *bpf_code_dump = g_string_new("");
@@ -1799,11 +1772,7 @@ update_options_table(gint index)
#else
gtk_list_store_set (GTK_LIST_STORE(model), &iter, CAPTURE, TRUE, INTERFACE, temp,LINK, link->name, PMODE, row.pmode?"enabled":"disabled", SNAPLEN, snaplen_string, FILTER, row.cfilter, -1);
#endif
-#ifdef USE_THREADS
if (num_selected > 0) {
-#else
- if (num_selected == 1) {
-#endif
gtk_widget_set_sensitive(ok_bt, TRUE);
} else {
gtk_widget_set_sensitive(ok_bt, FALSE);
@@ -2362,11 +2331,7 @@ static void toggle_callback(GtkCellRendererToggle *cell _U_,
} else {
gtk_widget_set_sensitive(pcap_ng_cb, TRUE);
}
-#ifdef USE_THREADS
if (num_selected > 0) {
-#else
- if (num_selected == 1) {
-#endif
gtk_widget_set_sensitive(ok_bt, TRUE);
} else {
gtk_widget_set_sensitive(ok_bt, FALSE);
@@ -2526,11 +2491,7 @@ void enable_selected_interface(gchar *name, gboolean enable)
break;
}
}
-#ifdef USE_THREADS
if (num_selected > 0) {
-#else
- if (num_selected == 1) {
-#endif
gtk_widget_set_sensitive(ok_bt, TRUE);
} else {
gtk_widget_set_sensitive(ok_bt, FALSE);
@@ -2574,11 +2535,7 @@ static void capture_all_cb(GtkToggleButton *button, gpointer d _U_)
if (get_welcome_window() != NULL) {
change_selection_for_all(enabled);
}
-#ifdef USE_THREADS
if (num_selected > 0) {
-#else
- if (num_selected == 1) {
-#endif
gtk_widget_set_sensitive(ok_bt, TRUE);
} else {
gtk_widget_set_sensitive(ok_bt, FALSE);
@@ -3234,11 +3191,7 @@ capture_prep_cb(GtkWidget *w _U_, gpointer d _U_)
ok_bt = g_object_get_data(G_OBJECT(bbox), WIRESHARK_STOCK_CAPTURE_START);
g_signal_connect(ok_bt, "clicked", G_CALLBACK(capture_start_cb), NULL);
gtk_widget_set_tooltip_text(ok_bt, "Start the capture process.");
-#ifdef USE_THREADS
if (num_selected > 0) {
-#else
- if (num_selected == 1) {
-#endif
gtk_widget_set_sensitive(ok_bt, TRUE);
} else {
gtk_widget_set_sensitive(ok_bt, FALSE);
diff --git a/gtk/capture_if_dlg.c b/gtk/capture_if_dlg.c
index 7afacaa1c6..959ee4360b 100644
--- a/gtk/capture_if_dlg.c
+++ b/gtk/capture_if_dlg.c
@@ -186,7 +186,7 @@ store_selected(GtkWidget *choose_bt, gpointer if_data)
temp->selected ^=1;
if_data_list = g_list_remove(if_data_list, curr->data);
if_data_list = g_list_insert(if_data_list, temp, ifs);
-
+
for (i = 0; i < global_capture_opts.ifaces->len; i++) {
if (strcmp(g_array_index(global_capture_opts.ifaces, interface_options, i).name, temp->if_info.name) == 0) {
found = TRUE;
@@ -210,8 +210,8 @@ store_selected(GtkWidget *choose_bt, gpointer if_data)
#endif
break;
}
- }
- }
+ }
+ }
if (!found && temp->selected) {
interface_opts.name = g_strdup(temp->if_info.name);
interface_opts.descr = get_interface_descriptive_name(interface_opts.name);
@@ -248,7 +248,7 @@ store_selected(GtkWidget *choose_bt, gpointer if_data)
enable_selected_interface(interface_opts.name, TRUE);
}
}
-
+
if (temp->selected)
currently_selected += 1;
else
@@ -257,11 +257,7 @@ store_selected(GtkWidget *choose_bt, gpointer if_data)
}
}
if (cap_if_w) {
-#ifdef USE_THREADS
gtk_widget_set_sensitive(capture_bt, !gbl_capture_in_progress && (currently_selected > 0));
-#else
- gtk_widget_set_sensitive(capture_bt, !gbl_capture_in_progress && (currently_selected == 1));
-#endif
}
}
@@ -393,11 +389,7 @@ set_capture_if_dialog_for_capture_in_progress(gboolean capture_in_progress)
gbl_capture_in_progress = capture_in_progress;
if (cap_if_w) {
gtk_widget_set_sensitive(stop_bt, capture_in_progress);
-#ifdef USE_THREADS
gtk_widget_set_sensitive(capture_bt, !capture_in_progress && (currently_selected > 0));
-#else
- gtk_widget_set_sensitive(capture_bt, !capture_in_progress && (currently_selected == 1));
-#endif
}
}
@@ -993,13 +985,13 @@ capture_if_cb(GtkWidget *w _U_, gpointer d _U_)
#endif
if_data_list = g_list_append(if_data_list, if_dlg_data);
-
+
row++;
if (row <= 10) {
/* Lets add up 10 rows of interfaces, otherwise the window may become too high */
gtk_widget_get_preferred_size(GTK_WIDGET(if_dlg_data->choose_bt), &requisition, NULL);
height += requisition.height;
- }
+ }
}
g_string_free(if_tool_str, TRUE);
@@ -1060,7 +1052,7 @@ void select_all_interfaces(gboolean enable)
curr = g_list_nth(if_data_list, ifs);
temp = (if_dlg_data_t *)(curr->data);
update_selected_interface(temp->if_info.name, enable);
- }
+ }
}
void destroy_if_window(void)
diff --git a/gtk/main.c b/gtk/main.c
index 3f5bda29c6..0caf80323d 100644
--- a/gtk/main.c
+++ b/gtk/main.c
@@ -2316,9 +2316,7 @@ main(int argc, char *argv[])
optind = optind_initial;
opterr = 1;
-#ifdef USE_THREADS
g_thread_init(NULL);
-#endif
/* Set the current locale according to the program environment.
* We haven't localized anything, but some GTK widgets are localized
@@ -2781,12 +2779,6 @@ main(int argc, char *argv[])
prefs_apply_all();
#ifdef HAVE_LIBPCAP
-#ifndef USE_THREADS
- if ((global_capture_opts.ifaces->len > 1) && start_capture) {
- cmdarg_err("You specified multiple interfaces for capturing which this version of Wireshark doesn't support.");
- exit(2);
- }
-#endif
if ((global_capture_opts.ifaces->len == 0) &&
(prefs.capture_device != NULL)) {
GList *curr, *combo_list;
diff --git a/gtk/main.h b/gtk/main.h
index 59b742ddfc..79fba33198 100644
--- a/gtk/main.h
+++ b/gtk/main.h
@@ -144,7 +144,7 @@ typedef enum {
*/
extern void copy_selected_plist_cb(GtkWidget *w _U_, gpointer data, COPY_SELECTED_E action);
-/** Set or remove a time reference on this frame
+/** Set or remove a time reference on this frame
*
* @param set TRUE = set time ref, FALSE=unset time ref
* @param frame pointer to frame
@@ -346,7 +346,7 @@ extern gboolean main_filter_packets(capture_file *cf, const gchar *dftext,
extern void create_console(void);
#endif
-#if defined(_WIN32) || ! defined USE_THREADS
+#if defined(_WIN32)
/** Restart the tap update display timer with new configured interval */
extern void reset_tap_update_timer(void);
#endif
diff --git a/gtk/main_welcome.c b/gtk/main_welcome.c
index 8226f5a588..c78457102a 100644
--- a/gtk/main_welcome.c
+++ b/gtk/main_welcome.c
@@ -111,9 +111,7 @@ static GArray *interfaces = NULL;
static GSList *status_messages = NULL;
-#ifdef USE_THREADS
static GMutex *recent_mtx = NULL;
-#endif
/* The "scroll box dynamic" is a (complicated) pseudo widget to */
/* place a vertically list of widgets in (currently the interfaces and recent files). */
@@ -503,9 +501,7 @@ static void *get_recent_item_status(void *data)
* most OSes use.
*/
err = ws_stat64(ri_stat->filename, &stat_buf);
-#ifdef USE_THREADS
g_mutex_lock(recent_mtx);
-#endif
ri_stat->err = err;
if(err == 0) {
if (stat_buf.st_size/1024/1024/1024 > 10) {
@@ -531,9 +527,7 @@ static void *get_recent_item_status(void *data)
} else {
ri_stat->stat_done = TRUE;
}
-#ifdef USE_THREADS
g_mutex_unlock(recent_mtx);
-#endif
return NULL;
}
@@ -549,9 +543,7 @@ update_recent_items(gpointer data)
return FALSE;
}
-#ifdef USE_THREADS
g_mutex_lock(recent_mtx);
-#endif
if (ri_stat->stat_done) {
again = FALSE;
gtk_label_set_markup(GTK_LABEL(ri_stat->label), ri_stat->str->str);
@@ -562,9 +554,7 @@ update_recent_items(gpointer data)
ri_stat->timer = 0;
}
/* Else append some sort of Unicode or ASCII animation to the label? */
-#ifdef USE_THREADS
g_mutex_unlock(recent_mtx);
-#endif
return again;
}
@@ -575,9 +565,7 @@ static void welcome_filename_destroy_cb(GtkWidget *w _U_, gpointer data) {
return;
}
-#ifdef USE_THREADS
g_mutex_lock(recent_mtx);
-#endif
if (ri_stat->timer) {
g_source_remove(ri_stat->timer);
ri_stat->timer = 0;
@@ -592,9 +580,7 @@ static void welcome_filename_destroy_cb(GtkWidget *w _U_, gpointer data) {
} else {
ri_stat->label = NULL;
}
-#ifdef USE_THREADS
g_mutex_unlock(recent_mtx);
-#endif
}
/* create a "file link widget" */
@@ -644,13 +630,8 @@ welcome_filename_link_new(const gchar *filename, GtkWidget **label, GObject *men
g_signal_connect(w, "destroy", G_CALLBACK(welcome_filename_destroy_cb), ri_stat);
g_free(str_escaped);
-#ifdef USE_THREADS
g_thread_create(get_recent_item_status, ri_stat, FALSE, NULL);
ri_stat->timer = g_timeout_add(200, update_recent_items, ri_stat);
-#else
- get_recent_item_status(ri_stat);
- update_recent_items(ri_stat);
-#endif
/* event box */
eb = gtk_event_box_new();
@@ -1022,14 +1003,14 @@ welcome_if_tree_load(void)
g_free (comment);
#endif
gtk_list_store_set(store, &iter, ICON, gtk_image_get_pixbuf(GTK_IMAGE(icon)), IFACE_DESCR, user_descr, IFACE_NAME, if_info->name, -1);
- d_interface.descr = g_strdup(user_descr);
+ d_interface.descr = g_strdup(user_descr);
g_free (user_descr);
} else if (if_info->description) {
gtk_list_store_set (store, &iter, ICON, gtk_image_get_pixbuf(GTK_IMAGE(icon)), IFACE_DESCR, if_info->description, IFACE_NAME, if_info->name, -1);
d_interface.descr = g_strdup(if_info->description);
} else {
gtk_list_store_set (store, &iter, ICON, gtk_image_get_pixbuf(GTK_IMAGE(icon)), IFACE_DESCR, if_info->name, IFACE_NAME, if_info->name, -1);
- d_interface.descr = g_strdup(if_info->name);
+ d_interface.descr = g_strdup(if_info->name);
}
g_array_append_val(interfaces, d_interface);
}
@@ -1084,13 +1065,6 @@ static void capture_if_start(GtkWidget *w _U_, gpointer data _U_)
"You didn't specify an interface on which to capture packets.");
return;
}
-#ifndef USE_THREADS
- if (global_capture_opts.ifaces->len > 1) {
- simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK,
- "You specified multiple interfaces for capturing which this version of Wireshark doesn't support.");
- return;
- }
-#endif
/* XXX - remove this? */
if (global_capture_opts.save_file) {
@@ -1237,19 +1211,11 @@ welcome_new(void)
gtk_tree_view_column_set_visible(column, FALSE);
selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(if_view));
gtk_tree_selection_set_mode(selection, GTK_SELECTION_MULTIPLE);
-#ifdef USE_THREADS
item_hb = welcome_button(WIRESHARK_STOCK_CAPTURE_START,
"Start",
"Choose one or more interfaces to capture from, then <b>Start</b>",
"Same as Capture/Interfaces with default options",
(welcome_button_callback_t)capture_if_start, (gpointer)if_view);
-#else
- item_hb = welcome_button(WIRESHARK_STOCK_CAPTURE_START,
- "Start",
- "Choose exactly one interface to capture from, then <b>Start</b>",
- "Same as Capture/Interfaces with default options",
- (welcome_button_callback_t)capture_if_start, (gpointer)if_view);
-#endif
gtk_box_pack_start(GTK_BOX(topic_to_fill), item_hb, FALSE, FALSE, 5);
welcome_if_tree_load();
gtk_container_add (GTK_CONTAINER (swindow), if_view);
@@ -1416,9 +1382,7 @@ welcome_new(void)
welcome_eb);
gtk_widget_show_all(welcome_scrollw);
-#ifdef USE_THREADS
recent_mtx = g_mutex_new();
-#endif
return welcome_scrollw;
}
diff --git a/gtk/prefs_capture.c b/gtk/prefs_capture.c
index e5e81ef5e4..8ea8aa6e3c 100644
--- a/gtk/prefs_capture.c
+++ b/gtk/prefs_capture.c
@@ -101,9 +101,6 @@ capture_prefs_show(void)
{
GtkWidget *main_tb, *main_vb;
GtkWidget *if_cbxe, *if_lb, *promisc_cb, *pcap_ng_cb, *sync_cb, *auto_scroll_cb, *show_info_cb;
-#ifndef USE_THREADS
- GtkWidget *syntax_check_filter_cb;
-#endif
GtkWidget *ifopts_lb, *ifopts_bt;
GList *if_list, *combo_list;
int err;
@@ -209,15 +206,6 @@ capture_prefs_show(void)
!prefs.capture_show_info);
g_object_set_data(G_OBJECT(main_vb), SHOW_INFO_KEY, show_info_cb);
-#ifndef USE_THREADS
- /* Syntax check capture filter */
- syntax_check_filter_cb = create_preference_check_button(main_tb, row++,
- "Syntax check capture filter:",
- "Syntax check capture filter. Turn this off if you experience delay when writing capture filters.",
- prefs.capture_syntax_check_filter);
- g_object_set_data(G_OBJECT(main_vb), SYNTAX_CHECK_FILTER_KEY, syntax_check_filter_cb);
-#endif
-
/* Show 'em what we got */
gtk_widget_show_all(main_vb);
diff --git a/gtk/prefs_taps.c b/gtk/prefs_taps.c
index 8f7cc4991d..c9db484f58 100644
--- a/gtk/prefs_taps.c
+++ b/gtk/prefs_taps.c
@@ -67,7 +67,7 @@ stats_prefs_show(void)
/* Tap update gap in ms */
tap_update_interval_te = create_preference_entry(main_tb, pos++,
- "Tap update interval in ms:",
+ "Tap update interval in ms:",
"Determines time between tap updates.", max_visible_str);
g_snprintf(update_interval_str, sizeof(update_interval_str), "%d", prefs.tap_update_interval);
gtk_entry_set_text(GTK_ENTRY(tap_update_interval_te), update_interval_str);
@@ -77,7 +77,7 @@ stats_prefs_show(void)
#ifdef HAVE_LIBPORTAUDIO
/* Max visible channels in RTP Player */
rtp_player_max_visible_te = create_preference_entry(main_tb, pos++,
- "Max visible channels in RTP Player:",
+ "Max visible channels in RTP Player:",
"Determines maximum height of RTP Player window.", max_visible_str);
g_snprintf(max_visible_str, sizeof(max_visible_str), "%d", prefs.rtp_player_max_visible);
gtk_entry_set_text(GTK_ENTRY(rtp_player_max_visible_te), max_visible_str);
@@ -124,7 +124,7 @@ stats_prefs_fetch(GtkWidget *w _U_)
void
stats_prefs_apply(GtkWidget *w _U_)
{
-#if defined(_WIN32) || ! defined USE_THREADS
+#if defined(_WIN32)
reset_tap_update_timer();
#endif
}
@@ -133,4 +133,3 @@ void
stats_prefs_destroy(GtkWidget *w _U_)
{
}
-