summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
authorGravatar Alexey Yakovenko <waker@users.sourceforge.net>2013-09-17 21:26:28 +0200
committerGravatar Alexey Yakovenko <waker@users.sourceforge.net>2013-09-17 21:26:28 +0200
commitff08de61456af0d16088a6546fb1728e4a143fdc (patch)
tree3ddd7fda1a19152b670a190d83a7b453ef7bcb12 /plugins
parent3eb72e81f08e7bc32babf96642fa9b72f0ea887f (diff)
parentd74734b1b4c3dfbdd39caa80e67e8c789e900cc3 (diff)
Merge branch 'master' of ssh://git.code.sf.net/p/deadbeef/code
Diffstat (limited to 'plugins')
-rw-r--r--plugins/gtkui/Makefile.am4
-rw-r--r--plugins/gtkui/ddbtabstrip.c2
-rw-r--r--plugins/gtkui/gtkui.c9
-rw-r--r--plugins/gtkui/gtkui.h1
-rw-r--r--plugins/gtkui/retina.h7
-rw-r--r--plugins/gtkui/retina.m11
-rw-r--r--plugins/mms/libmms/uri.c16
7 files changed, 48 insertions, 2 deletions
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 <Cocoa/Cocoa.h>
+#include <gtk/gtk.h>
+#include <gdk/gdkquartz.h>
+#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;
+}
diff --git a/plugins/mms/libmms/uri.c b/plugins/mms/libmms/uri.c
index 6b6475eb..111ca128 100644
--- a/plugins/mms/libmms/uri.c
+++ b/plugins/mms/libmms/uri.c
@@ -26,6 +26,22 @@
#include "uri.h"
#include <string.h>
+#ifndef strndup
+# define strndup(s, n) ({\
+ char *out;\
+ char *c = memchr (s, n, 0);\
+ if (c) {\
+ out = strdup (s);\
+ }\
+ else {\
+ out = malloc (n+1);\
+ memcpy (out, s, n);\
+ out[n] = 0;\
+ }\
+ out;\
+})
+#endif
+
static void field_unescape (char *str);
static char* field_escape (char* str, unsigned char mask);