summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
authorGravatar Alexey Yakovenko <waker@users.sourceforge.net>2013-10-30 22:45:42 +0100
committerGravatar Alexey Yakovenko <waker@users.sourceforge.net>2013-10-31 19:55:41 +0100
commitc0f06de893f5378117b419d8f3e27a71f17afd34 (patch)
tree4e1115be27fa668ee7c5e66211d73b649095f9ce /plugins
parent95048c37933de195c7231467b9bd5749bccbd697 (diff)
gtkui: vis fixes
Diffstat (limited to 'plugins')
-rw-r--r--plugins/gtkui/Makefile.am15
-rw-r--r--plugins/gtkui/gtkuigl.h6
-rw-r--r--plugins/gtkui/widgets.c58
3 files changed, 36 insertions, 43 deletions
diff --git a/plugins/gtkui/Makefile.am b/plugins/gtkui/Makefile.am
index 831c7095..bd8a75c7 100644
--- a/plugins/gtkui/Makefile.am
+++ b/plugins/gtkui/Makefile.am
@@ -50,7 +50,8 @@ sdk_HEADERS = gtkui_api.h
EXTRA_DIST = deadbeef.glade
-#GTKGLEXT_LIBS = -lGL -lGLU
+GTKGLEXT2_LIBS = -lGL -lGLU
+GTKGLEXT3_LIBS =
if STATICLINK
if HAVE_GTK2
@@ -81,6 +82,7 @@ endif
# normal lib
if HAVE_GTK2
GTKUI_SOURCES_GTK2 = $(GTKUI_SOURCES)
+
# gtkglext-gtk2/gdk/x11/gdkglconfig-x11.c\
# gtkglext-gtk2/gdk/x11/gdkglconfig-x11.h\
# gtkglext-gtk2/gdk/x11/gdkglcontext-x11.c\
@@ -151,11 +153,11 @@ ddb_gui_GTK2_la_LDFLAGS = -module
if STATICLINK
GTK_ROOT_216=@top_srcdir@/$(LIB)/gtk-2.16.0
-ddb_gui_GTK2_la_LIBADD = $(LDADD) -L$(GTK_ROOT_216)/lib -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lgdk_pixbuf-2.0 -lpangocairo-1.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lglib-2.0 $(SM_LIBADD) ../libparser/libparser.a $(GTKGLEXT_LIBS)
+ddb_gui_GTK2_la_LIBADD = $(LDADD) -L$(GTK_ROOT_216)/lib -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lgdk_pixbuf-2.0 -lpangocairo-1.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lglib-2.0 $(SM_LIBADD) ../libparser/libparser.a $(GTKGLEXT2_LIBS)
ddb_gui_GTK2_la_CFLAGS = -std=c99 -I$(GTK_ROOT_216)/include/gtk-2.0 -I$(GTK_ROOT_216)/lib/gtk-2.0/include -I$(GTK_ROOT_216)/include/atk-1.0 -I$(GTK_ROOT_216)/include/cairo -I$(GTK_ROOT_216)/include/pango-1.0 -I$(GTK_ROOT_216)/include -I$(GTK_ROOT_216)/include/glib-2.0 -I$(GTK_ROOT_216)/lib/glib-2.0/include $(SM_CFLAGS) $(GTKGLEXT_CFLAGS_GTK2)
else
-ddb_gui_GTK2_la_LIBADD = $(LDADD) $(GTK2_DEPS_LIBS) $(SM_LIBADD) ../libparser/libparser.a $(GTKGLEXT_LIBS)
+ddb_gui_GTK2_la_LIBADD = $(LDADD) $(GTK2_DEPS_LIBS) $(SM_LIBADD) ../libparser/libparser.a $(GTKGLEXT2_LIBS)
ddb_gui_GTK2_la_CFLAGS = -std=c99 $(GTK2_DEPS_CFLAGS) $(SM_CFLAGS) $(GTKGLEXT_CFLAGS_GTK2)
endif
@@ -164,6 +166,7 @@ endif
if HAVE_GTK3
GTKUI_SOURCES_GTK3 = $(GTKUI_SOURCES)
+
# gtkglext-gtk3/gtk/gtkglinit.c\
# gtkglext-gtk3/gtk/gtkglversion.c\
# gtkglext-gtk3/gtk/gtkglwidget.c\
@@ -230,13 +233,13 @@ if STATICLINK
ddb_gui_GTK3_la_SOURCES = $(GTKUI_SOURCES_GTK3)
GTK_ROOT_300=@top_srcdir@/$(LIB)/gtk-3.0.0
-ddb_gui_GTK3_la_LIBADD = $(LDADD) -L$(GTK_ROOT_300)/lib -lgtk-3 -lgdk-3 -latk-1.0 -lgio-2.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo-gobject -lpango-1.0 -lcairo -lgobject-2.0 -lgthread-2.0 -lglib-2.0 -lfreetype -lfontconfig $(SM_LIBADD) ../libparser/libparser.a $(GTKGLEXT_LIBS)
+ddb_gui_GTK3_la_LIBADD = $(LDADD) -L$(GTK_ROOT_300)/lib -lgtk-3 -lgdk-3 -latk-1.0 -lgio-2.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo-gobject -lpango-1.0 -lcairo -lgobject-2.0 -lgthread-2.0 -lglib-2.0 -lfreetype -lfontconfig $(SM_LIBADD) ../libparser/libparser.a $(GTKGLEXT3_LIBS)
ddb_gui_GTK3_la_CFLAGS = -std=c99 -I$(GTK_ROOT_300)/include/gtk-3.0 -I$(GTK_ROOT_300)/include/pango-1.0 -I$(GTK_ROOT_300)/include/gio-unix-2.0/ -I$(GTK_ROOT_300)/include/atk-1.0 -I$(GTK_ROOT_300)/include/cairo -I$(GTK_ROOT_300)/include/gdk-pixbuf-2.0 -I$(GTK_ROOT_300)/include/freetype2 -I$(GTK_ROOT_300)/include/glib-2.0 -I$(GTK_ROOT_300)/lib/glib-2.0/include $(SM_CFLAGS) $(GTKGLEXT_CFLAGS_GTK3)
else
ddb_gui_GTK3_la_SOURCES = $(GTKUI_SOURCES_GTK3)
-ddb_gui_GTK3_la_LIBADD = $(LDADD) $(GTK3_DEPS_LIBS) $(SM_LIBADD) ../libparser/libparser.a $(GTKGLEXT_LIBS)
+ddb_gui_GTK3_la_LIBADD = $(LDADD) $(GTK3_DEPS_LIBS) $(SM_LIBADD) ../libparser/libparser.a $(GTKGLEXT3_LIBS)
ddb_gui_GTK3_la_CFLAGS = -std=c99 $(GTK3_DEPS_CFLAGS) $(SM_CFLAGS) $(GTKGLEXT_CFLAGS_GTK3)
endif
endif
@@ -248,7 +251,7 @@ GTK_ROOT=@top_srcdir@/$(LIB)/gtk-2.12.12/usr
ddb_gui_GTK2_fallback_la_SOURCES = $(GTKUI_SOURCES_GTK2)
ddb_gui_GTK2_fallback_la_LDFLAGS = -module
-ddb_gui_GTK2_fallback_la_LIBADD = $(LDADD) -L$(GTK_ROOT)/lib $(GTK_ROOT)/lib/libgtk-x11-2.0.la $(GTK_ROOT)/lib/libgdk-x11-2.0.la $(GTK_ROOT)/lib/libpangoft2-1.0.la $(GTK_ROOT)/lib/libpangocairo-1.0.la $(GTK_ROOT)/lib/libgdk_pixbuf-2.0.la -lm $(GTK_ROOT)/lib/libcairo.la $(GTK_ROOT)/lib/libpango-1.0.la $(GTK_ROOT)/lib/libgobject-2.0.la $(GTK_ROOT)/lib/libgmodule-2.0.la $(GTK_ROOT)/lib/libgthread-2.0.la -lrt $(GTK_ROOT)/lib/libglib-2.0.la $(SM_LIBADD) ../libparser/libparser.a $(GTKGLEXT_LIBS)
+ddb_gui_GTK2_fallback_la_LIBADD = $(LDADD) -L$(GTK_ROOT)/lib $(GTK_ROOT)/lib/libgtk-x11-2.0.la $(GTK_ROOT)/lib/libgdk-x11-2.0.la $(GTK_ROOT)/lib/libpangoft2-1.0.la $(GTK_ROOT)/lib/libpangocairo-1.0.la $(GTK_ROOT)/lib/libgdk_pixbuf-2.0.la -lm $(GTK_ROOT)/lib/libcairo.la $(GTK_ROOT)/lib/libpango-1.0.la $(GTK_ROOT)/lib/libgobject-2.0.la $(GTK_ROOT)/lib/libgmodule-2.0.la $(GTK_ROOT)/lib/libgthread-2.0.la -lrt $(GTK_ROOT)/lib/libglib-2.0.la $(SM_LIBADD) ../libparser/libparser.a $(GTKGLEXT2_LIBS)
ddb_gui_GTK2_fallback_la_CFLAGS = -std=c99 -I $(GTK_ROOT)/include -I $(GTK_ROOT)/lib/gtk-2.0/include -I $(GTK_ROOT)/include/glib-2.0 -I $(GTK_ROOT)/include/gtk-2.0 -I $(GTK_ROOT)/include/cairo -I $(GTK_ROOT)/lib/glib-2.0/include/ -I $(GTK_ROOT)/include/pango-1.0 -I $(GTK_ROOT)/include/atk-1.0 $(SM_CFLAGS) $(GTKGLEXT_CFLAGS_GTK2)
diff --git a/plugins/gtkui/gtkuigl.h b/plugins/gtkui/gtkuigl.h
index 2bab1836..88e2d5c1 100644
--- a/plugins/gtkui/gtkuigl.h
+++ b/plugins/gtkui/gtkuigl.h
@@ -37,5 +37,11 @@
int
gtkui_gl_init (void);
+
+#if GTK_CHECK_VERSION(3,0,0)
+#define gdk_gl_context_destroy g_object_unref
+#endif
+
+
#endif
#endif
diff --git a/plugins/gtkui/widgets.c b/plugins/gtkui/widgets.c
index ae9e3185..cce3c1b2 100644
--- a/plugins/gtkui/widgets.c
+++ b/plugins/gtkui/widgets.c
@@ -2356,7 +2356,7 @@ scope_draw_cairo (GtkWidget *widget, cairo_t *cr, gpointer user_data) {
float hh = a.height/2.f;
cairo_move_to (cr, 0, ftoi(w->samples[0] * h + hh));
- for (int i = 1; i < w->nsamples; i += 2) {
+ for (int i = 1; i < w->nsamples; i++) {
float y = w->samples[i] * h + hh;
cairo_line_to (cr, i, y);
}
@@ -2369,17 +2369,27 @@ scope_draw_cairo (GtkWidget *widget, cairo_t *cr, gpointer user_data) {
gboolean
scope_draw (GtkWidget *widget, cairo_t *cr, gpointer user_data) {
#if USE_OPENGL
- w_scope_t *w = user_data;
- float data[DDB_AUDIO_MEMORY_FRAMES];
- deadbeef->audio_get_waveform_data (DDB_AUDIO_WAVEFORM, data);
GtkAllocation a;
gtk_widget_get_allocation (widget, &a);
+ w_scope_t *w = user_data;
+ int nsamples = a.width;
+ if (w->nsamples != nsamples) {
+ w->resized = nsamples;
+ return FALSE;
+ }
+ float incr = a.width / (float)w->nsamples;
+ float h = a.height;
+ if (h > 50) {
+ h -= 20;
+ }
+ if (h > 100) {
+ h -= 40;
+ }
+ h /= 2;
+ float hh = a.height/2.f;
GdkGLDrawable *d = gtk_widget_get_gl_drawable (widget);
gdk_gl_drawable_gl_begin (d, w->glcontext);
- // if (glXSwapIntervalSGI) {
- // glXSwapIntervalSGI (1);
- // }
glClear (GL_COLOR_BUFFER_BIT);
glMatrixMode (GL_PROJECTION);
@@ -2388,36 +2398,11 @@ scope_draw (GtkWidget *widget, cairo_t *cr, gpointer user_data) {
glMatrixMode (GL_MODELVIEW);
glViewport (0, 0, a.width, a.height);
-#if 0
- // vsync test
- static int box = 0;
- static int speed = 5;
- if (box > a.width-50) {
- box = a.width-50;
- speed = -5;
- }
- else if (box < 0) {
- box = 0;
- speed = 5;
- }
- box += speed;
-
- glBegin (GL_QUADS);
- glVertex2f (box, 0);
- glVertex2f (box+50, 0);
- glVertex2f (box+50, 50);
- glVertex2f (box, 50);
- glEnd ();
-#endif
glBegin (GL_LINE_STRIP);
- short *samples = (short *)data;
-
- float incr = a.width / (float)DDB_AUDIO_MEMORY_FRAMES;
- int pos = 0;
- for (float x = 0; x < a.width && pos < DDB_AUDIO_MEMORY_FRAMES; x += incr, pos ++) {
- float s = data[(int)pos];
- glVertex2f (x, s * a.height/2 + a.height/2);
+ for (int i = 0; i < w->nsamples; i++) {
+ float y = w->samples[i] * h + hh;
+ glVertex2f (i, y);
}
glEnd();
@@ -2646,7 +2631,7 @@ spectrum_draw (GtkWidget *widget, cairo_t *cr, gpointer user_data) {
int x = ((width / bands) * i) + 2;
int y = a.height - w->peaks[i] * base_s;
cairo_set_source_rgb (cr, 1, 1, 1);
- cairo_rectangle (cr, x + 1, y, (width / bands) - 1, 2);
+ cairo_rectangle (cr, x + 1, y, (width / bands) - 1, 1);
}
cairo_fill (cr);
@@ -2670,7 +2655,6 @@ w_spectrum_init (ddb_gtkui_widget_t *w) {
s->drawtimer = 0;
}
#if USE_OPENGL
- gtkui_gl_init ();
if (!gtkui_gl_init ()) {
s->drawtimer = g_timeout_add (33, w_spectrum_draw_cb, w);
}