diff --git a/desmume/src/gtk/main.cpp b/desmume/src/gtk/main.cpp
index df87599a0..5cf872ea6 100644
--- a/desmume/src/gtk/main.cpp
+++ b/desmume/src/gtk/main.cpp
@@ -77,15 +77,14 @@
#undef GPOINTER_TO_UINT
#define GPOINTER_TO_UINT(p) ((guint) (glong) (p))
-#define EMULOOP_PRIO (G_PRIORITY_HIGH_IDLE + 20)
+#define EMULOOP_PRIO (G_PRIORITY_HIGH_IDLE + 20 + 1)
#define SCREENS_PIXEL_SIZE (256*192*2)
#define SCREEN_BYTES_PER_PIXEL 3
#define GAP_SIZE 50
-#define FPS_LIMITER_FRAME_PERIOD 8
-static SDL_sem *fps_limiter_semaphore;
static int gtk_fps_limiter_disabled;
+static int draw_count;
extern int _scanline_filter_a, _scanline_filter_b, _scanline_filter_c, _scanline_filter_d;
VideoFilter video(256, 384, VideoFilterTypeID_HQ2XS, 4);
@@ -128,6 +127,8 @@ static void ToggleAudio (GtkToggleAction *action);
#ifdef FAKE_MIC
static void ToggleMicNoise (GtkToggleAction *action);
#endif
+static void ToggleFpsLimiter (GtkToggleAction *action);
+static void ToggleAutoFrameskip (GtkToggleAction *action);
static void ToggleSwapScreens(GtkToggleAction *action);
static void ToggleGap (GtkToggleAction *action);
static void SetRotation(GtkAction *action, GtkRadioAction *current);
@@ -198,11 +199,20 @@ static const char *ui_description =
#endif
" "
"
"
"