Skip to content

Commit

Permalink
Prepare for CPU rendering
Browse files Browse the repository at this point in the history
  • Loading branch information
djowel committed Mar 22, 2024
1 parent 58024d0 commit 63ab10a
Showing 1 changed file with 19 additions and 11 deletions.
30 changes: 19 additions & 11 deletions examples/host/linux/skia_app.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -43,14 +43,13 @@ namespace

void realize(GtkGLArea* area, gpointer user_data)
{
gtk_gl_area_make_current (area);
if (gtk_gl_area_get_error (area) != NULL)
gtk_gl_area_make_current(area);
if (gtk_gl_area_get_error(area) != NULL)
return;

view_state& state = *reinterpret_cast<view_state*>(user_data);
glClearColor(state._bkd.red, state._bkd.green, state._bkd.blue, state._bkd.alpha);
glClear(GL_COLOR_BUFFER_BIT);
state._xface = GrGLMakeNativeInterface();
state._ctx = GrDirectContext::MakeGL(state._xface);
}

Expand Down Expand Up @@ -127,21 +126,30 @@ namespace

g_signal_connect(window, "destroy", G_CALLBACK(close_window), user_data);

// create a GtkGLArea instance
auto* gl_area = gtk_gl_area_new();
gtk_container_add(GTK_CONTAINER(window), gl_area);

g_signal_connect(gl_area, "render", G_CALLBACK(render), user_data);
g_signal_connect(gl_area, "realize", G_CALLBACK(realize), user_data);
GtkWidget* widget = nullptr;
if (state._xface = GrGLMakeNativeInterface(); state._xface != nullptr)
{
// create a GtkGLArea instance
GtkWidget* gl_area = gtk_gl_area_new();
widget = gl_area;
gtk_container_add(GTK_CONTAINER(window), gl_area);

g_signal_connect(gl_area, "render", G_CALLBACK(render), user_data);
g_signal_connect(gl_area, "realize", G_CALLBACK(realize), user_data);
}
else
{
// GPU rendering not available
}

gtk_window_resize(GTK_WINDOW(window), state._size.x, state._size.y);
gtk_widget_show_all(window);

auto w = gtk_widget_get_window(GTK_WIDGET(window));
state._scale = gdk_window_get_scale_factor(w);

if (state._animate)
state._timer_id = g_timeout_add(1000 / 60, animate, gl_area);
if (widget && state._animate)
state._timer_id = g_timeout_add(1000 / 60, animate, widget);
}
}

Expand Down

0 comments on commit 63ab10a

Please sign in to comment.