From d74734b1b4c3dfbdd39caa80e67e8c789e900cc3 Mon Sep 17 00:00:00 2001 From: Alexey Yakovenko Date: Tue, 17 Sep 2013 21:22:15 +0200 Subject: gtkui: disable tabstrip antialiasing on ldpi macs --- configure.ac | 1 + plugins/gtkui/Makefile.am | 4 +++- plugins/gtkui/ddbtabstrip.c | 2 +- plugins/gtkui/gtkui.c | 9 +++++++++ plugins/gtkui/gtkui.h | 1 + plugins/gtkui/retina.h | 7 +++++++ plugins/gtkui/retina.m | 11 +++++++++++ 7 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 plugins/gtkui/retina.h create mode 100644 plugins/gtkui/retina.m diff --git a/configure.ac b/configure.ac index 591b3073..d9ab23d9 100644 --- a/configure.ac +++ b/configure.ac @@ -11,6 +11,7 @@ AC_USE_SYSTEM_EXTENSIONS LT_INIT AC_PROG_CC AC_PROG_CXX +AC_PROG_OBJC AC_STDC_HEADERS AC_PROG_INSTALL dnl AC_PROG_LIBTOOL diff --git a/plugins/gtkui/Makefile.am b/plugins/gtkui/Makefile.am index b8def462..e5e9b70f 100644 --- a/plugins/gtkui/Makefile.am +++ b/plugins/gtkui/Makefile.am @@ -98,6 +98,8 @@ endif if HAVE_GTK3 if OS_OSX +AM_CPPFLAGS = $(CXXFLAGS) $(GTK3_DEPS_CFLAGS) +GTK3_OSX_SOURCES = retina.m GTKGLEXT_SOURCES = else GTKGLEXT_LIBS = -lGL @@ -157,7 +159,7 @@ endif GTKGLEXT_CFLAGS = -I@top_srcdir@/plugins/gtkui/gtkglext-gtk3 -I@top_srcdir@/plugins/gtkui/gtkglext-gtk3/gdk -DGTK_GL_COMPILATION -DGDK_GL_COMPILATION -ddb_gui_GTK3_la_SOURCES = $(GTKUI_SOURCES) $(GTKGLEXT_SOURCES) +ddb_gui_GTK3_la_SOURCES = $(GTKUI_SOURCES) $(GTKGLEXT_SOURCES) $(GTK3_OSX_SOURCES) ddb_gui_GTK3_la_LDFLAGS = -module if STATICLINK diff --git a/plugins/gtkui/ddbtabstrip.c b/plugins/gtkui/ddbtabstrip.c index c9827eda..f89c7eda 100644 --- a/plugins/gtkui/ddbtabstrip.c +++ b/plugins/gtkui/ddbtabstrip.c @@ -596,7 +596,7 @@ tabstrip_render (DdbTabStrip *ts, cairo_t *cr) { tabstrip_adjust_hscroll (ts); cairo_set_line_width (cr, 1); #ifdef __APPLE__ - cairo_set_antialias (cr, CAIRO_ANTIALIAS_GRAY); + cairo_set_antialias (cr, gtkui_is_retina ? CAIRO_ANTIALIAS_GRAY : CAIRO_ANTIALIAS_NONE); #else cairo_set_antialias (cr, CAIRO_ANTIALIAS_NONE); #endif diff --git a/plugins/gtkui/gtkui.c b/plugins/gtkui/gtkui.c index 2804e91c..894e1f85 100644 --- a/plugins/gtkui/gtkui.c +++ b/plugins/gtkui/gtkui.c @@ -56,6 +56,8 @@ #include "widgets.h" #ifndef __APPLE__ #include "X11/Xlib.h" +#else +#include "retina.h" #endif #undef EGG_SM_CLIENT_BACKEND_XSMP #ifdef EGG_SM_CLIENT_BACKEND_XSMP @@ -91,6 +93,10 @@ void (*gtkui_original_pl_add_files_end) (void); // cached config variable int gtkui_embolden_current_track; +#ifdef __APPLE__ +int gtkui_is_retina = 0; +#endif + #define TRAY_ICON "deadbeef_tray_icon" // that must be called before gtk_init @@ -1151,6 +1157,9 @@ gtkui_thread (void *ctx) { gtkui_connect_cb (NULL); deadbeef->sendmessage (DB_EV_PLAYLISTCHANGED, 0, 0, 0); +#ifdef __APPLE__ + gtkui_is_retina = is_retina (mainwin); +#endif gtk_main (); w_free (); diff --git a/plugins/gtkui/gtkui.h b/plugins/gtkui/gtkui.h index 3867cc19..c4b59e07 100644 --- a/plugins/gtkui/gtkui.h +++ b/plugins/gtkui/gtkui.h @@ -35,6 +35,7 @@ extern DB_functions_t *deadbeef; extern GtkWidget *mainwin; extern GtkWidget *searchwin; extern int gtkui_embolden_current_track; +extern int gtkui_is_retina; struct _GSList; diff --git a/plugins/gtkui/retina.h b/plugins/gtkui/retina.h new file mode 100644 index 00000000..9d0f8ddb --- /dev/null +++ b/plugins/gtkui/retina.h @@ -0,0 +1,7 @@ +#ifndef __RETINA_H +#define __RETINA_H + +int +is_retina (GtkWidget *w); + +#endif diff --git a/plugins/gtkui/retina.m b/plugins/gtkui/retina.m new file mode 100644 index 00000000..320bfdc1 --- /dev/null +++ b/plugins/gtkui/retina.m @@ -0,0 +1,11 @@ +#include +#include +#include +#include "retina.h" + +int +is_retina (GtkWidget *w) { + NSWindow *window = gdk_quartz_window_get_nswindow (gtk_widget_get_window (w)); + float s = [window backingScaleFactor]; + return s > 1.0f; +} -- cgit v1.2.3