platform/upstream/weston.git
13 years agowindow.c: Deal with visual changes
Kristian Høgsberg [Fri, 13 May 2011 17:24:56 +0000 (13:24 -0400)]
window.c: Deal with visual changes

13 years agoview: Add fullscreen option
Kristian Høgsberg [Fri, 13 May 2011 17:54:19 +0000 (13:54 -0400)]
view: Add fullscreen option

13 years agoview: Set resize handler so fullscreen doesn't crash
Kristian Høgsberg [Fri, 13 May 2011 17:51:13 +0000 (13:51 -0400)]
view: Set resize handler so fullscreen doesn't crash

13 years agosimple-client: setenv the EGL platform for simple client as well
Kristian Høgsberg [Fri, 13 May 2011 21:07:23 +0000 (17:07 -0400)]
simple-client: setenv the EGL platform for simple client as well

13 years agocompositor: Call wlsc_buffer_attach() after setting es->width
Kristian Høgsberg [Fri, 13 May 2011 18:06:29 +0000 (14:06 -0400)]
compositor: Call wlsc_buffer_attach() after setting es->width

Otherwise we end up with a 0 pitch.

13 years agoconfigure: Only check for XCB if x11 compositor is enabled
Kristian Høgsberg [Wed, 11 May 2011 17:46:29 +0000 (13:46 -0400)]
configure: Only check for XCB if x11 compositor is enabled

13 years agocompositor: Set EGL_PLATFORM env variable for each backend.
Egbert Eich [Tue, 10 May 2011 20:00:19 +0000 (20:00 +0000)]
compositor: Set EGL_PLATFORM env variable for each backend.

I may have missed something, but - since the Wayland compositor
already picks a platform backend, opens a connection and initializes the
backend specific display data structure it doesn't make sense
to let egl pick a platform. If it picks a different one the
display specific data structure will most likely not match.
Thus determine the platform in the Wayland rendering backend by setting
the EGL_PLATFORM env variable.
For the client any other platform than 'wayland' doesn't seem to make
sense.
I'm not sure if I've got the the platform ofr openfwd right.

Signed-off-by: Egbert Eich <eich@freedesktop.org>
13 years agomeego-tablet-compositor: Only ask for lockscreen after we get homescreen
Kristian Høgsberg [Mon, 9 May 2011 01:28:45 +0000 (21:28 -0400)]
meego-tablet-compositor: Only ask for lockscreen after we get homescreen

This way we don't fade up until the lockscreen is showing.

13 years agocompositor: Fix warning in load_module
Benjamin Franzke [Fri, 6 May 2011 21:19:22 +0000 (23:19 +0200)]
compositor: Fix warning in load_module

13 years agocompositor-openwfd: Update to tty, cursor and cflags changes
Benjamin Franzke [Fri, 6 May 2011 21:16:10 +0000 (23:16 +0200)]
compositor-openwfd: Update to tty, cursor and cflags changes

13 years agoMake use of wl_resource.destroy_listener_list for surfaces.
Benjamin Franzke [Fri, 6 May 2011 15:13:17 +0000 (17:13 +0200)]
Make use of wl_resource.destroy_listener_list for surfaces.

13 years agocompositor-drm: Hide hw cursors on vt switch
Kristian Høgsberg [Fri, 6 May 2011 19:38:28 +0000 (15:38 -0400)]
compositor-drm: Hide hw cursors on vt switch

13 years agocompositor-drm: Fix vt switching
Kristian Høgsberg [Fri, 6 May 2011 19:15:37 +0000 (15:15 -0400)]
compositor-drm: Fix vt switching

Don't take input or render while switched away, drop and set master correctly.

13 years agoFix warnings and symbol visibility from missing CFLAGS
Kristian Høgsberg [Fri, 6 May 2011 18:52:41 +0000 (14:52 -0400)]
Fix warnings and symbol visibility from missing CFLAGS

13 years agoMake sure all targets use GCC_CFLAGS
Kristian Høgsberg [Fri, 6 May 2011 18:49:06 +0000 (14:49 -0400)]
Make sure all targets use GCC_CFLAGS

13 years agoconfigure: Remove a xcb-dri2 leftover
Benjamin Franzke [Fri, 6 May 2011 09:10:57 +0000 (11:10 +0200)]
configure: Remove a xcb-dri2 leftover

Fixes compositor and clients trying to link against xcb-dri2.

13 years agocompositor: Disable hw cursor if we're texturing the cursor
Kristian Høgsberg [Fri, 6 May 2011 18:04:21 +0000 (14:04 -0400)]
compositor: Disable hw cursor if we're texturing the cursor

13 years agocompositor: Scanout client buffers even if they're not map_fullscreen
Kristian Høgsberg [Fri, 6 May 2011 18:03:12 +0000 (14:03 -0400)]
compositor: Scanout client buffers even if they're not map_fullscreen

13 years agocompositor-drm: Use EGL_DRM_BUFFER_USE_CURSOR_MESA
Kristian Høgsberg [Fri, 6 May 2011 17:23:49 +0000 (13:23 -0400)]
compositor-drm: Use EGL_DRM_BUFFER_USE_CURSOR_MESA

13 years agomeego-tablet-shell: Destroy tablet_client resource in destroy request
Kristian Høgsberg [Thu, 5 May 2011 19:30:40 +0000 (15:30 -0400)]
meego-tablet-shell: Destroy tablet_client resource in destroy request

13 years agomeego-tablet-shell: Handle app switcher choices
Kristian Høgsberg [Thu, 5 May 2011 19:25:28 +0000 (15:25 -0400)]
meego-tablet-shell: Handle app switcher choices

13 years agocompositor-openwfd: Fixup backend split
Benjamin Franzke [Wed, 4 May 2011 19:19:43 +0000 (21:19 +0200)]
compositor-openwfd: Fixup backend split

13 years agomeego-tablet-shell: Rename tablet_client.poke to activate and add a destructor
Kristian Høgsberg [Wed, 4 May 2011 20:17:20 +0000 (16:17 -0400)]
meego-tablet-shell: Rename tablet_client.poke to activate and add a destructor

13 years agomeego-tablet-shell: Add requests to let ux-daemon ask for appgrid or panels
Kristian Høgsberg [Wed, 4 May 2011 20:16:43 +0000 (16:16 -0400)]
meego-tablet-shell: Add requests to let ux-daemon ask for appgrid or panels

13 years agocompositor-drm: Fix modularization breakage
Kristian Høgsberg [Wed, 4 May 2011 19:08:04 +0000 (15:08 -0400)]
compositor-drm: Fix modularization breakage

13 years agomeego-tablet-shell: Track the state of the UI explicitly
Kristian Høgsberg [Wed, 4 May 2011 15:35:02 +0000 (11:35 -0400)]
meego-tablet-shell: Track the state of the UI explicitly

13 years agomeego-tablet-shell: Handle meta key with super modifier so we get the release
Kristian Høgsberg [Tue, 3 May 2011 17:11:43 +0000 (13:11 -0400)]
meego-tablet-shell: Handle meta key with super modifier so we get the release

13 years agomeego-tablet-shell: Handle animation surface going away
Kristian Høgsberg [Tue, 3 May 2011 16:41:03 +0000 (12:41 -0400)]
meego-tablet-shell: Handle animation surface going away

13 years agocompositor: Split backends into modules
Kristian Høgsberg [Tue, 3 May 2011 02:09:20 +0000 (22:09 -0400)]
compositor: Split backends into modules

13 years agomeego-tablet-shell: Use KEY_COMPOSE for the menu key
Kristian Høgsberg [Mon, 2 May 2011 19:24:11 +0000 (15:24 -0400)]
meego-tablet-shell: Use KEY_COMPOSE for the menu key

This is what the Windows menu key maps to in evdev keycodes.

13 years agocompositor: Rename tweener to spring
Kristian Høgsberg [Mon, 2 May 2011 18:38:18 +0000 (14:38 -0400)]
compositor: Rename tweener to spring

Because it's a spring model, not a tweener.

13 years agocompositor: Group matrix and inverse in struct wlsc_transform
Kristian Høgsberg [Mon, 2 May 2011 18:35:40 +0000 (14:35 -0400)]
compositor: Group matrix and inverse in struct wlsc_transform

13 years agomeego-tablet-shell: Factor out zoom animation
Kristian Høgsberg [Mon, 2 May 2011 18:21:03 +0000 (14:21 -0400)]
meego-tablet-shell: Factor out zoom animation

13 years agomeego-tablet-shell: Match meego-ux-daemon key bindings
Kristian Høgsberg [Mon, 2 May 2011 18:11:15 +0000 (14:11 -0400)]
meego-tablet-shell: Match meego-ux-daemon key bindings

13 years agomeego-tablet-shell: Only clear CLOEXEC flag in child
Kristian Høgsberg [Mon, 2 May 2011 17:57:38 +0000 (13:57 -0400)]
meego-tablet-shell: Only clear CLOEXEC flag in child

13 years agocompositor: Export matrix functions
Kristian Høgsberg [Mon, 2 May 2011 17:53:45 +0000 (13:53 -0400)]
compositor: Export matrix functions

13 years agocompositor: Drop broken opaque repaint optimization for now
Kristian Høgsberg [Mon, 2 May 2011 17:52:00 +0000 (13:52 -0400)]
compositor: Drop broken opaque repaint optimization for now

13 years agocompositor: Remove unused surface matrix, add optional transform
Kristian Høgsberg [Mon, 2 May 2011 17:47:51 +0000 (13:47 -0400)]
compositor: Remove unused surface matrix, add optional transform

13 years agoTweak tweener constants and add friction parameter
Kristian Høgsberg [Mon, 2 May 2011 17:38:03 +0000 (13:38 -0400)]
Tweak tweener constants and add friction parameter

13 years agoconfigure.ac: Just look for png, not png12
Kristian Høgsberg [Mon, 2 May 2011 17:37:47 +0000 (13:37 -0400)]
configure.ac: Just look for png, not png12

13 years agoRemove unused surface->buffer field
Kristian Høgsberg [Mon, 2 May 2011 17:35:17 +0000 (13:35 -0400)]
Remove unused surface->buffer field

If we make sure the link is either on a list or initialized, we can alway
just remove it.

13 years agocompositor-wayland: Fix interface renames (prefix)
Benjamin Franzke [Sat, 30 Apr 2011 08:41:27 +0000 (10:41 +0200)]
compositor-wayland: Fix interface renames (prefix)

13 years agocompositor: Screenhoot into a client provided shm buffer
Kristian Høgsberg [Mon, 2 May 2011 16:11:07 +0000 (12:11 -0400)]
compositor: Screenhoot into a client provided shm buffer

This moves the png writing part to the client and removes the gdk-pixbuf
dependency from the compositor.

13 years agocompositor: Use libpng directly instead of gdb-pixbuf
Kristian Høgsberg [Sat, 23 Apr 2011 19:03:15 +0000 (15:03 -0400)]
compositor: Use libpng directly instead of gdb-pixbuf

13 years agoJust use getopt_long for option parsing
Kristian Høgsberg [Mon, 2 May 2011 14:36:04 +0000 (10:36 -0400)]
Just use getopt_long for option parsing

13 years agocompositor-drm: Retrieve extension functions before wlsc_compositor_init
Benjamin Franzke [Fri, 29 Apr 2011 20:14:54 +0000 (22:14 +0200)]
compositor-drm: Retrieve extension functions before wlsc_compositor_init

wlsc_compositor_init calls pointer_create, which calls
create_cursor which needs EGL_MESA_drm_image functions.

13 years agoAdd some new things to .gitignore
Casey Dahlin [Fri, 29 Apr 2011 06:58:45 +0000 (02:58 -0400)]
Add some new things to .gitignore

libtoytoolkit.a, and generated protocol headers for meego-tablet.

13 years agocompositor-openwfd: Use wfd_device_id as drm fd
Benjamin Franzke [Thu, 28 Apr 2011 19:29:59 +0000 (21:29 +0200)]
compositor-openwfd: Use wfd_device_id as drm fd

owfdrm uses non-0 (0 == WFD_INVALID_DEVICE_ID) fd's as wfd_device_ids.
This is not standardized, but also not invalid.

13 years agocompositor: Fix drm compositor cflags typo
Benjamin Franzke [Thu, 28 Apr 2011 05:21:19 +0000 (07:21 +0200)]
compositor: Fix drm compositor cflags typo

13 years agoAdd --disable-clients configure option
Kristian Høgsberg [Tue, 26 Apr 2011 15:47:00 +0000 (11:47 -0400)]
Add --disable-clients configure option

13 years agocompositor: Recalculate fullscreen surface x,y in surface_attach
Benjamin Franzke [Tue, 26 Apr 2011 13:36:26 +0000 (15:36 +0200)]
compositor: Recalculate fullscreen surface x,y in surface_attach

13 years agoCast fd's to intptr_t before casting to EGLNativeDisplay
Benjamin Franzke [Tue, 26 Apr 2011 07:21:13 +0000 (09:21 +0200)]
Cast fd's to intptr_t before casting to EGLNativeDisplay

Fixes warnings on 64bit.

Also use wlsc_compositor::destroy_image in compositor-openwfd.

13 years agoconfigure: Only check dependencies for the enabled compositor backends
Kristian Høgsberg [Tue, 26 Apr 2011 15:10:32 +0000 (11:10 -0400)]
configure: Only check dependencies for the enabled compositor backends

13 years agocompositor: Fix overlapping options
Kristian Høgsberg [Mon, 25 Apr 2011 19:59:15 +0000 (15:59 -0400)]
compositor: Fix overlapping options

13 years agocompositor-x11: Only use xcb_poll_for_queued_event if we have it
Kristian Høgsberg [Mon, 25 Apr 2011 19:41:59 +0000 (15:41 -0400)]
compositor-x11: Only use xcb_poll_for_queued_event if we have it

Otherwise we can just fall back to xcb_poll_for_event, and just do a
harmless read on the socket.

13 years agocompositor: Stop using EGL_EGLEXT_PROTOTYPES and look up extension functions
Kristian Høgsberg [Mon, 25 Apr 2011 19:08:20 +0000 (15:08 -0400)]
compositor: Stop using EGL_EGLEXT_PROTOTYPES and look up extension functions

13 years agocompositor: Don't use glClear for clearing
Kristian Høgsberg [Sat, 23 Apr 2011 19:34:50 +0000 (15:34 -0400)]
compositor: Don't use glClear for clearing

Draw solid color rectangles clipped to the repaint area instead.

13 years agocompositor: Use stride/4 as width for shm textures
Benjamin Franzke [Mon, 25 Apr 2011 17:44:47 +0000 (19:44 +0200)]
compositor: Use stride/4 as width for shm textures

13 years agocompositor: Use EGL_WL_bind_wayland_display only if available
Benjamin Franzke [Mon, 25 Apr 2011 15:47:44 +0000 (17:47 +0200)]
compositor: Use EGL_WL_bind_wayland_display only if available

13 years agoAdd meego-tablet-shell
Kristian Høgsberg [Sat, 23 Apr 2011 17:17:43 +0000 (13:17 -0400)]
Add meego-tablet-shell

We'll probably break it out into its own repo down the road, but for
now keeping it here is convenient.

13 years agocompositor: Support loadable shells
Kristian Høgsberg [Sat, 23 Apr 2011 17:04:11 +0000 (13:04 -0400)]
compositor: Support loadable shells

The shell module is responsible for implementing the higher level
compositor behavior.  We default to the desktop-lite shell built in to
the compositor.

13 years agocompositor: Fade to black on idle timeout
Kristian Høgsberg [Fri, 22 Apr 2011 19:38:14 +0000 (15:38 -0400)]
compositor: Fade to black on idle timeout

13 years agocompositor: Refactor shader setup a bit
Kristian Høgsberg [Fri, 22 Apr 2011 18:23:51 +0000 (14:23 -0400)]
compositor: Refactor shader setup a bit

13 years agocompositor-openwfd: Fix event handler return type
Kristian Høgsberg [Fri, 22 Apr 2011 18:05:32 +0000 (14:05 -0400)]
compositor-openwfd: Fix event handler return type

13 years agocompositor: Implement a simple screensaver feature
Kristian Høgsberg [Fri, 22 Apr 2011 18:01:18 +0000 (14:01 -0400)]
compositor: Implement a simple screensaver feature

We'll need protocol for screensaver inhibit requests.

13 years agoAlso fix compositor-wayland event handler
Kristian Høgsberg [Fri, 22 Apr 2011 17:01:26 +0000 (13:01 -0400)]
Also fix compositor-wayland event handler

13 years agoUpdate return types of event handler functions
Kristian Høgsberg [Fri, 22 Apr 2011 16:27:57 +0000 (12:27 -0400)]
Update return types of event handler functions

Missed this in previous commit.

13 years agocompositor-x11: Adjust to event loop changes
Kristian Høgsberg [Fri, 22 Apr 2011 16:18:13 +0000 (12:18 -0400)]
compositor-x11: Adjust to event loop changes

Instead of having a separate check function, we just mark our x11 event
source as needing a post-dispatch check.  The event loop will call our
dispatch function again after all dispatching is done, this time with
mask = 0.  If we don't process any events, return 0, so the event loop
doesn't keep calling us.

13 years agoMake use of wayland-server shm common code
Benjamin Franzke [Tue, 8 Mar 2011 10:32:57 +0000 (11:32 +0100)]
Make use of wayland-server shm common code

13 years agocompositor: Use surface_attached_to list for shm-buffers
Benjamin Franzke [Mon, 7 Mar 2011 17:04:59 +0000 (18:04 +0100)]
compositor: Use surface_attached_to list for shm-buffers

13 years agocompositor: Add wlsc_shm_buffer_attach
Benjamin Franzke [Mon, 7 Mar 2011 14:17:56 +0000 (15:17 +0100)]
compositor: Add wlsc_shm_buffer_attach

13 years agoImplement buffer.damage in shm, use it in window.c
Benjamin Franzke [Mon, 7 Mar 2011 14:08:09 +0000 (15:08 +0100)]
Implement buffer.damage in shm, use it in window.c

13 years agocompositor-x11: Set xcb to be eventqueue owner
Benjamin Franzke [Fri, 25 Mar 2011 13:06:37 +0000 (14:06 +0100)]
compositor-x11: Set xcb to be eventqueue owner

This'll fix egl_gallium (when bind_wayland_display is done).

13 years agocompositor: Pass NULL for context to wayland buffer eglCreateImageKHR()
Kristian Høgsberg [Fri, 22 Apr 2011 03:48:13 +0000 (23:48 -0400)]
compositor: Pass NULL for context to wayland buffer eglCreateImageKHR()

13 years agocompositor-x11: Use check function to make sure we handle all events
Kristian Høgsberg [Thu, 21 Apr 2011 18:51:44 +0000 (14:51 -0400)]
compositor-x11: Use check function to make sure we handle all events

If somebody else did an X11 round trip, that could leave events in the
XCB buffer that we wouldn't see until the next X event came in.  The new
event source check function lets us check the XCB queue after dispatching
and this way we'll see events we need to deal with right away.

13 years agoFix clients to work with wl_ prefixed interface names
Kristian Høgsberg [Wed, 20 Apr 2011 22:53:07 +0000 (18:53 -0400)]
Fix clients to work with wl_ prefixed interface names

13 years agocompositor-x11: Use the keymap_notify immediately following the focus_in event
Kristian Høgsberg [Tue, 19 Apr 2011 16:38:22 +0000 (12:38 -0400)]
compositor-x11: Use the keymap_notify immediately following the focus_in event

The event handling gets a little trickier this way but we need the
keymap sent immdiately after the focus_in event to determine which keys
are pressed as the compositor receives keyboard focus.

13 years agocompositor-x11: Generalize handling of event pairs
Kristian Høgsberg [Tue, 19 Apr 2011 13:23:29 +0000 (09:23 -0400)]
compositor-x11: Generalize handling of event pairs

We need to look at the focus_in and keymap notify pair to correctly determine
the set of held down keys at focus in time, so generalize the handling
of event pairs in preparation for that.

13 years agoUpdate to work with scanner that doesn't hardcode wl_*
Kristian Høgsberg [Mon, 18 Apr 2011 14:33:25 +0000 (10:33 -0400)]
Update to work with scanner that doesn't hardcode wl_*

This lets us drop the wl_ prefix for the un-officual screenshooter protocol.

13 years agoSwitch to new subscribe protocol and wayland-egl
Kristian Høgsberg [Thu, 14 Apr 2011 18:44:58 +0000 (14:44 -0400)]
Switch to new subscribe protocol and wayland-egl

13 years agocompositor-openwfd: Fixup rebase
Benjamin Franzke [Wed, 20 Apr 2011 18:16:25 +0000 (20:16 +0200)]
compositor-openwfd: Fixup rebase

13 years agocompositor: Add OpenWF Display backend
Benjamin Franzke [Sun, 3 Apr 2011 22:30:25 +0000 (00:30 +0200)]
compositor: Add OpenWF Display backend

13 years agoOptimize fullscreen scanout abit
Benjamin Franzke [Wed, 20 Apr 2011 15:06:13 +0000 (17:06 +0200)]
Optimize fullscreen scanout abit

Use the drm fb_id used for the scanout-test
as well for the corresponding pageflip.

Move most of the scanout details into compositor-drm.

13 years agoMerge remote-tracking branch 'bnf/fullscreen-pageflip'
Kristian Høgsberg [Wed, 20 Apr 2011 13:35:15 +0000 (09:35 -0400)]
Merge remote-tracking branch 'bnf/fullscreen-pageflip'

13 years agoMake use of a hardware cursor in compositor-drm
Benjamin Franzke [Wed, 20 Apr 2011 09:02:58 +0000 (11:02 +0200)]
Make use of a hardware cursor in compositor-drm

13 years agocompositor(-drm): Pageflip to fullscreen surfaces
Benjamin Franzke [Sun, 10 Apr 2011 14:49:52 +0000 (16:49 +0200)]
compositor(-drm): Pageflip to fullscreen surfaces

13 years agocompositor-x11: Suppress keyboard repeat events
Kristian Høgsberg [Fri, 15 Apr 2011 19:48:07 +0000 (15:48 -0400)]
compositor-x11: Suppress keyboard repeat events

13 years agowindow.c: Check for cairo device failure the right way
Kristian Høgsberg [Thu, 14 Apr 2011 15:54:59 +0000 (11:54 -0400)]
window.c: Check for cairo device failure the right way

13 years agoOnly invoke shell button bindings if there's a pointer focus surface
Kristian Høgsberg [Wed, 13 Apr 2011 15:52:54 +0000 (11:52 -0400)]
Only invoke shell button bindings if there's a pointer focus surface

13 years agoMove more switcher details to switcher.c
Kristian Høgsberg [Wed, 13 Apr 2011 02:23:30 +0000 (22:23 -0400)]
Move more switcher details to switcher.c

13 years agoMove switcher behaviour into switcher.c
Kristian Høgsberg [Tue, 12 Apr 2011 21:42:30 +0000 (17:42 -0400)]
Move switcher behaviour into switcher.c

13 years agoMove shell bindings to shell.c
Kristian Høgsberg [Tue, 12 Apr 2011 21:25:42 +0000 (17:25 -0400)]
Move shell bindings to shell.c

13 years agoExtend wlsc_binding to cover buttons too
Kristian Høgsberg [Tue, 12 Apr 2011 21:22:49 +0000 (17:22 -0400)]
Extend wlsc_binding to cover buttons too

13 years agoUpdate modifier state as input devices enter and leave
Kristian Høgsberg [Tue, 12 Apr 2011 21:16:00 +0000 (17:16 -0400)]
Update modifier state as input devices enter and leave

13 years agoDefine _GNU_SOURCE for O_CLOEXEC flag
Kristian Høgsberg [Tue, 12 Apr 2011 15:34:32 +0000 (11:34 -0400)]
Define _GNU_SOURCE for O_CLOEXEC flag

13 years agoRemove double definition of window_get_wl_surface()
Kristian Høgsberg [Mon, 11 Apr 2011 20:59:05 +0000 (16:59 -0400)]
Remove double definition of window_get_wl_surface()

13 years agoRemove typo
Kristian Høgsberg [Mon, 11 Apr 2011 20:49:17 +0000 (16:49 -0400)]
Remove typo

Failed to break up the patch into commits.

13 years agoMerge remote-tracking branch 'bnf/surface-frame-event'
Kristian Høgsberg [Mon, 11 Apr 2011 20:47:50 +0000 (16:47 -0400)]
Merge remote-tracking branch 'bnf/surface-frame-event'

Conflicts:
compositor/compositor.c

13 years agoAdd a simple key binding mechanism
Kristian Høgsberg [Mon, 11 Apr 2011 17:58:13 +0000 (13:58 -0400)]
Add a simple key binding mechanism

13 years agoCall present after clearing repaint_needed
Kristian Høgsberg [Mon, 11 Apr 2011 17:39:43 +0000 (13:39 -0400)]
Call present after clearing repaint_needed

In case we end up scheduling a repaint in the finish_frame callback.