diff options
author | Alexey Yakovenko <waker@users.sourceforge.net> | 2013-10-30 22:45:42 +0100 |
---|---|---|
committer | Alexey Yakovenko <waker@users.sourceforge.net> | 2013-10-31 19:55:41 +0100 |
commit | c0f06de893f5378117b419d8f3e27a71f17afd34 (patch) | |
tree | 4e1115be27fa668ee7c5e66211d73b649095f9ce /plugins | |
parent | 95048c37933de195c7231467b9bd5749bccbd697 (diff) |
gtkui: vis fixes
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/gtkui/Makefile.am | 15 | ||||
-rw-r--r-- | plugins/gtkui/gtkuigl.h | 6 | ||||
-rw-r--r-- | plugins/gtkui/widgets.c | 58 |
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); } |