diff options
-rw-r--r-- | plugins/gtkui/gtkuigl.c | 2 | ||||
-rw-r--r-- | plugins/gtkui/widgets.c | 21 |
2 files changed, 16 insertions, 7 deletions
diff --git a/plugins/gtkui/gtkuigl.c b/plugins/gtkui/gtkuigl.c index def1dcf3..33cab099 100644 --- a/plugins/gtkui/gtkuigl.c +++ b/plugins/gtkui/gtkuigl.c @@ -34,9 +34,11 @@ gtkui_gl_init (void) { argv[0] = "deadbeef"; gboolean success = gdk_gl_init_check (&argc, (char ***)&argv); if (!success) { + fprintf (stderr, "gdk_gl_init_check failed\n"); return -1; } // glXSwapIntervalSGI = (PFNGLXSWAPINTERVALSGIPROC) glXGetProcAddressARB((const GLubyte*)"glXSwapIntervalSGI"); + fprintf (stderr, "gdk_gl_init_check success\n"); return 0; } diff --git a/plugins/gtkui/widgets.c b/plugins/gtkui/widgets.c index 0631f0b9..b3610f40 100644 --- a/plugins/gtkui/widgets.c +++ b/plugins/gtkui/widgets.c @@ -1790,9 +1790,9 @@ scope_expose_event (GtkWidget *widget, GdkEventExpose *event, gpointer user_data short *samples = (short *)data; - float incr = (float)DDB_AUDIO_MEMORY_FRAMES / a.width; - float pos = 0; - for (int x = 0; x < a.width; x++, pos += incr) { + 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); } @@ -1813,11 +1813,13 @@ scope_expose_event (GtkWidget *widget, GdkEventExpose *event, gpointer user_data void w_scope_init (ddb_gtkui_widget_t *w) { w_scope_t *s = (w_scope_t *)w; - gtkui_gl_init (); if (s->drawtimer) { g_source_remove (s->drawtimer); + s->drawtimer = 0; + } + if (!gtkui_gl_init ()) { + s->drawtimer = g_timeout_add (33, w_scope_draw_cb, w); } - s->drawtimer = g_timeout_add (33, w_scope_draw_cb, w); } void @@ -1964,18 +1966,20 @@ spectrum_expose_event (GtkWidget *widget, GdkEventExpose *event, gpointer user_d glViewport (0, 0, a.width, a.height); glBegin (GL_QUADS); - gfloat base_s = (height / 40); + float base_s = (height / 40.f); for (gint i = 0; i <= bands; i++) { gint x = ((width / bands) * i) + 2; int y = a.height - bars[i] * base_s; + glColor3f (0, 0.5, 1); glVertex2f (x + 1, y); glVertex2f (x + 1 + (width / bands) - 1, y); glVertex2f (x + 1 + (width / bands) - 1, a.height); glVertex2f (x + 1, a.height); // peak + glColor3f (1, 1, 1); y = a.height - peaks[i] * base_s; glVertex2f (x + 1, y); glVertex2f (x + 1 + (width / bands) - 1, y); @@ -1996,8 +2000,11 @@ w_spectrum_init (ddb_gtkui_widget_t *w) { gtkui_gl_init (); if (s->drawtimer) { g_source_remove (s->drawtimer); + s->drawtimer = 0; + } + if (!gtkui_gl_init ()) { + s->drawtimer = g_timeout_add (33, w_spectrum_draw_cb, w); } - s->drawtimer = g_timeout_add (33, w_spectrum_draw_cb, w); } void |