+void *osdl_video_get_active_buffer(struct SDL_PrivateVideoData *pdata)
+{
+ if (pdata->fbdev == NULL)
+ return NULL;
+
+ return vout_fbdev_get_active_mem(pdata->fbdev);
+}
+
+int osdl_video_pause(struct SDL_PrivateVideoData *pdata, int is_pause)
+{
+ struct omapfb_state *state = pdata->saved_layer;
+ struct omapfb_plane_info pi;
+ struct omapfb_mem_info mi;
+ int enabled;
+ int fd = -1;
+ int ret;
+
+ if (pdata->fbdev != NULL)
+ fd = vout_fbdev_get_fd(pdata->fbdev);
+ if (fd == -1) {
+ err("bad fd %d", fd);
+ return -1;
+ }
+ if (state == NULL) {
+ err("missing layer state\n");
+ return -1;
+ }
+
+ if (is_pause) {
+ ret = vout_fbdev_save(pdata->fbdev);
+ if (ret != 0)
+ return ret;
+ pi = state->pi_old;
+ mi = state->mi_old;
+ enabled = pi.enabled;
+ } else {
+ pi = state->pi;
+ mi = state->mi;
+ enabled = 1;
+ }
+ pi.enabled = 0;
+ ret = ioctl(fd, OMAPFB_SETUP_PLANE, &pi);
+ if (ret != 0) {
+ err_perror("SETUP_PLANE");
+ return -1;
+ }
+
+ ret = ioctl(fd, OMAPFB_SETUP_MEM, &mi);
+ if (ret != 0)
+ err_perror("SETUP_MEM");
+
+ if (!is_pause) {
+ ret = vout_fbdev_restore(pdata->fbdev);
+ if (ret != 0) {
+ err("fbdev_restore failed\n");
+ return ret;
+ }
+ }
+
+ if (enabled) {
+ pi.enabled = 1;
+ ret = ioctl(fd, OMAPFB_SETUP_PLANE, &pi);
+ if (ret != 0) {
+ err_perror("SETUP_PLANE");
+ return -1;
+ }
+ }
+
+ return 0;
+}
+