+ unsigned i;
+
+ use_gl(compositor, screen);
+
+ glClearColor(0.5f, 0.5f, 0.5f, 0.0f);
+ glClear(GL_COLOR_BUFFER_BIT);
+
+ glUseProgram(screen->program);
+ glBindVertexArray(screen->vertex_array);
+ for(i=0; i<screen->nwindows; ++i)
+ {
+ CompositedWindow *window = &screen->windows[i];
+ if(window->map_state!=IsViewable)
+ continue;
+
+ glBindTexture(GL_TEXTURE_2D, window->texture);
+ compositor->glXBindTexImageEXT(compositor->display, window->glx_pixmap, GLX_FRONT_LEFT_EXT, NULL);
+ glUniform4f(screen->geometry_loc,
+ (float)window->x/screen->width, (float)(screen->height-window->y-window->height)/screen->height,
+ (float)(window->width+2*window->border)/screen->width, (float)(window->height+2*window->border)/screen->height);
+ glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
+ compositor->glXReleaseTexImageEXT(compositor->display, window->glx_pixmap, GLX_FRONT_LEFT_EXT);
+ XDamageSubtract(compositor->display, window->damage, None, None);
+ }
+
+ glXSwapBuffers(compositor->display, screen->glx_window);
+
+ screen->dirty = 0;
+}
+
+void refresh_all_screens(Compositor *compositor)
+{
+ unsigned i;