diff --git a/bochs/gui/enh_dbg.h b/bochs/gui/enh_dbg.h
index 5c8c3d731..158fd2fe3 100644
--- a/bochs/gui/enh_dbg.h
+++ b/bochs/gui/enh_dbg.h
@@ -186,7 +186,7 @@ extern short DockOrder; // set the default List "docking" (Reg, ASM, Dump
// END of User Customizable settings
#if !defined(_MSC_VER)
-#define FMT_LLCAPX "%016llX"
+#define FMT_LLCAPX FMT_LL"X"
#else
#define FMT_LLCAPX "%016I64X"
#endif
diff --git a/bochs/gui/gtk_enh_dbg_osdep.cc b/bochs/gui/gtk_enh_dbg_osdep.cc
index 837ac0118..29840de9c 100644
--- a/bochs/gui/gtk_enh_dbg_osdep.cc
+++ b/bochs/gui/gtk_enh_dbg_osdep.cc
@@ -231,8 +231,13 @@ bool ShowAskDialog()
if (dialog == NULL)
{
dialog = gtk_dialog_new ();
+#if BX_HAVE_GTK_VERSION == 2
gtk_dialog_add_button (GTK_DIALOG (dialog), GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL);
gtk_dialog_add_button (GTK_DIALOG (dialog), GTK_STOCK_OK, GTK_RESPONSE_OK);
+#else
+ gtk_dialog_add_button (GTK_DIALOG (dialog), g_dgettext("gtk30", "_Cancel"), GTK_RESPONSE_CANCEL);
+ gtk_dialog_add_button (GTK_DIALOG (dialog), g_dgettext("gtk30", "_OK"), GTK_RESPONSE_OK);
+#endif
gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK);
}
// HIHI should the "transient" line be INSIDE the dialog creation "if"? -- when I tried it, it crashed?
@@ -586,7 +591,11 @@ int GetASMTopIdx()
// Database = (GtkListStore *) gtk_tree_view_get_model( GTK_TREE_VIEW(LV[ASM_WND]) );
AsmPgSize = 0;
- va = gtk_tree_view_get_vadjustment ( GTK_TREE_VIEW(LV[ASM_WND]) );
+#if BX_HAVE_GTK_VERSION == 2
+ va = gtk_tree_view_get_vadjustment(GTK_TREE_VIEW(LV[ASM_WND]));
+#else
+ va = gtk_scrollable_get_vadjustment(GTK_SCROLLABLE(LV[ASM_WND]));
+#endif
// calculate the number of vertical "pixels" in one row (as a fraction of the scroll range)
if (AsmLineCount == 0)
return 0;
@@ -601,7 +610,11 @@ int GetASMTopIdx()
// -- it does not technically have to really be a pixel count
void ScrollASM(int pixels)
{
- GtkAdjustment *va = gtk_tree_view_get_vadjustment ( GTK_TREE_VIEW(LV[ASM_WND]) );
+#if BX_HAVE_GTK_VERSION == 2
+ GtkAdjustment *va = gtk_tree_view_get_vadjustment(GTK_TREE_VIEW(LV[ASM_WND]));
+#else
+ GtkAdjustment *va = gtk_scrollable_get_vadjustment(GTK_SCROLLABLE(LV[ASM_WND]));
+#endif
gtk_adjustment_set_value(GTK_ADJUSTMENT(va), gtk_adjustment_get_value(va) + pixels);
}
@@ -832,7 +845,11 @@ void StartListUpdate(int listnum)
static int PrevDV = -1; // type of previous Dump window that was displayed
GtkListStore *Database;
// set the scroll position back to the very top
- GtkAdjustment *va = gtk_tree_view_get_vadjustment ( GTK_TREE_VIEW(LV[listnum]) );
+#if BX_HAVE_GTK_VERSION == 2
+ GtkAdjustment *va = gtk_tree_view_get_vadjustment(GTK_TREE_VIEW(LV[listnum]));
+#else
+ GtkAdjustment *va = gtk_scrollable_get_vadjustment(GTK_SCROLLABLE(LV[listnum]));
+#endif
gtk_adjustment_set_value (GTK_ADJUSTMENT(va), 0);
// then clear the database for the list that is updating
Database = (GtkListStore *) gtk_tree_view_get_model( GTK_TREE_VIEW(LV[listnum]) );
@@ -2184,7 +2201,11 @@ bool OSInit()
gtk_window_move(GTK_WINDOW(window), win_x, win_y);
}
+#if BX_HAVE_GTK_VERSION == 2
MainVbox = gtk_vbox_new(FALSE, 0); // vbox that contains EVERYTHING
+#else
+ MainVbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
+#endif
gtk_container_add(GTK_CONTAINER(window), MainVbox);
@@ -2192,7 +2213,11 @@ bool OSInit()
InitMenus();
// build the StatusBar
+#if BX_HAVE_GTK_VERSION == 2
StatHbox = gtk_hbox_new(FALSE, 3);
+#else
+ StatHbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 3);
+#endif
Stat[0] = gtk_label_new("Break");
gtk_label_set_width_chars (GTK_LABEL(Stat[0]), 7);
Stat[1] = gtk_label_new("CPU:");
@@ -2200,9 +2225,15 @@ bool OSInit()
Stat[2] = gtk_label_new("t=0");
gtk_label_set_width_chars (GTK_LABEL(Stat[2]), 19);
Stat[3] = gtk_label_new("IOPL");
+#if BX_HAVE_GTK_VERSION == 2
StatVSep1 = gtk_vseparator_new();
StatVSep2 = gtk_vseparator_new();
StatVSep3 = gtk_vseparator_new();
+#else
+ StatVSep1 = gtk_separator_new(GTK_ORIENTATION_VERTICAL);
+ StatVSep2 = gtk_separator_new(GTK_ORIENTATION_VERTICAL);
+ StatVSep3 = gtk_separator_new(GTK_ORIENTATION_VERTICAL);
+#endif
gtk_box_pack_start(GTK_BOX(StatHbox), Stat[0], FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(StatHbox), StatVSep1, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(StatHbox), Stat[1], FALSE, FALSE, 0);
@@ -2211,25 +2242,45 @@ bool OSInit()
gtk_box_pack_start(GTK_BOX(StatHbox), StatVSep3, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(StatHbox), Stat[3], TRUE, TRUE, 0);
// set LEFT, instead of the default centered "justification" of status text
+#if BX_HAVE_GTK_VERSION == 2
gtk_misc_set_alignment(GTK_MISC(Stat[0]), (gfloat) 0., (gfloat) 0.5);
gtk_misc_set_alignment(GTK_MISC(Stat[1]), (gfloat) 0., (gfloat) 0.5);
gtk_misc_set_alignment(GTK_MISC(Stat[2]), (gfloat) 0., (gfloat) 0.5);
gtk_misc_set_alignment(GTK_MISC(Stat[3]), (gfloat) 0., (gfloat) 0.5);
+#else
+ gtk_widget_set_halign(GTK_WIDGET(Stat[0]), GTK_ALIGN_START);
+ gtk_widget_set_valign(GTK_WIDGET(Stat[0]), GTK_ALIGN_CENTER);
+ gtk_widget_set_halign(GTK_WIDGET(Stat[1]), GTK_ALIGN_START);
+ gtk_widget_set_valign(GTK_WIDGET(Stat[1]), GTK_ALIGN_CENTER);
+ gtk_widget_set_halign(GTK_WIDGET(Stat[2]), GTK_ALIGN_START);
+ gtk_widget_set_valign(GTK_WIDGET(Stat[2]), GTK_ALIGN_CENTER);
+ gtk_widget_set_halign(GTK_WIDGET(Stat[3]), GTK_ALIGN_START);
+ gtk_widget_set_valign(GTK_WIDGET(Stat[3]), GTK_ALIGN_CENTER);
+#endif
gtk_box_pack_start(GTK_BOX(MainVbox), menubar, FALSE, FALSE, 0);
gtk_box_pack_end(GTK_BOX(MainVbox), StatHbox, FALSE, FALSE, 0);
// build the table that holds the TreeView/Input&Output windows
TreeTbl = gtk_table_new(4, 1, TRUE); // proportion the remaining space in quarters, vertically
+#if BX_HAVE_GTK_VERSION == 2
sep8 = gtk_vseparator_new(); // vertical separators between the ListViews
sep9 = gtk_vseparator_new();
+#else
+ sep8 = gtk_separator_new(GTK_ORIENTATION_VERTICAL);
+ sep9 = gtk_separator_new(GTK_ORIENTATION_VERTICAL);
+#endif
VSepEvtBox1 = gtk_event_box_new(); // seps need event boxes to catch "Enter" events
VSepEvtBox2 = gtk_event_box_new();
gtk_container_add (GTK_CONTAINER(VSepEvtBox1), sep8);
gtk_container_add (GTK_CONTAINER(VSepEvtBox2), sep9);
gtk_widget_add_events(VSepEvtBox1, GDK_ENTER_NOTIFY_MASK); // masks must be set immediately after creation
gtk_widget_add_events(VSepEvtBox2, GDK_ENTER_NOTIFY_MASK);
+#if BX_HAVE_GTK_VERSION == 2
IOVbox = gtk_vbox_new(FALSE, 0); // stack the Input Entry and Output TextView vertically
+#else
+ IOVbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
+#endif
// create Input window
IEntry = gtk_entry_new();
@@ -2252,13 +2303,21 @@ bool OSInit()
gtk_box_pack_start(GTK_BOX(IOVbox), ScrlWinOut, TRUE, TRUE, 0);
gtk_box_pack_end(GTK_BOX(IOVbox), IEntry, FALSE, FALSE, 0);
+#if BX_HAVE_GTK_VERSION == 2
LVHbox = gtk_hbox_new(FALSE, 0); // to hold the ListView windows
+#else
+ LVHbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
+#endif
LVEvtBox = gtk_event_box_new(); // need to catch "leave" and "move" events for ListViews
gtk_container_add (GTK_CONTAINER(LVEvtBox), LVHbox);
gtk_widget_add_events(LVEvtBox, GDK_LEAVE_NOTIFY_MASK | GDK_POINTER_MOTION_MASK | GDK_BUTTON_PRESS_MASK);
// make Command and CPU Button rows
+#if BX_HAVE_GTK_VERSION == 2
CmdBHbox = gtk_hbox_new(TRUE, 0);
+#else
+ CmdBHbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
+#endif
for (i=0 ; i < 5 ; i++)
{
@@ -2274,7 +2333,11 @@ bool OSInit()
// CPU button row does not exist for only 1 cpu
if (BX_SMP_PROCESSORS > 1)
{
+#if BX_HAVE_GTK_VERSION == 2
CpuBHbox = gtk_hbox_new(TRUE, 0);
+#else
+ CpuBHbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
+#endif
gtk_box_pack_start(GTK_BOX(MainVbox), CpuBHbox, FALSE, FALSE, 0);
i = 0;
strcpy (bigbuf, "CPU0"); // Handle CPU0 specially -- it is "selected"
diff --git a/bochs/gui/gtk_usb_debug.cc b/bochs/gui/gtk_usb_debug.cc
index a78e336d7..04eda3cac 100644
--- a/bochs/gui/gtk_usb_debug.cc
+++ b/bochs/gui/gtk_usb_debug.cc
@@ -31,13 +31,13 @@
#include
// multithreading using pure posix threads -- not glib threads
-void * EventLp(void *data)
+static void * EventLp(void *data)
{
gtk_main();
return NULL;
}
-void MakeGTKthreads()
+static void MakeGTKthreads()
{
pthread_t hThread;
pthread_create(&hThread, NULL, EventLp, NULL);
diff --git a/bochs/iodev/network/slirp/slirp.cc b/bochs/iodev/network/slirp/slirp.cc
index a098a84a6..2d48c35f2 100644
--- a/bochs/iodev/network/slirp/slirp.cc
+++ b/bochs/iodev/network/slirp/slirp.cc
@@ -734,7 +734,7 @@ void slirp_cleanup(Slirp *slirp)
for (e = slirp->guestfwd_list; e; e = next) {
next = e->ex_next;
free(e->ex_exec);
- free(e->ex_unix);
+// free(e->ex_unix);
free(e);
}