Lines Matching refs:fsout
165 struct fs_output *fsout; in seat_caps_changed() local
182 wl_list_for_each(fsout, &listener->shell->output_list, link) { in seat_caps_changed()
183 if (fsout->surface) { in seat_caps_changed()
184 weston_seat_set_keyboard_focus(seat, fsout->surface); in seat_caps_changed()
230 create_black_surface(struct weston_compositor *ec, struct fs_output *fsout, in create_black_surface() argument
249 surface->committed_private = fsout; in create_black_surface()
263 fs_output_set_surface(struct fs_output *fsout, struct weston_surface *surface,
267 fs_output_apply_pending(struct fs_output *fsout);
269 fs_output_clear_pending(struct fs_output *fsout);
272 fs_output_destroy(struct fs_output *fsout) in fs_output_destroy() argument
274 fs_output_set_surface(fsout, NULL, 0, 0, 0); in fs_output_destroy()
275 fs_output_clear_pending(fsout); in fs_output_destroy()
277 wl_list_remove(&fsout->link); in fs_output_destroy()
279 if (fsout->output) in fs_output_destroy()
280 wl_list_remove(&fsout->output_destroyed.link); in fs_output_destroy()
295 struct fs_output *fsout = container_of(listener, in surface_destroyed() local
298 fsout->surface = NULL; in surface_destroyed()
299 fsout->view = NULL; in surface_destroyed()
300 wl_list_remove(&fsout->transform.link); in surface_destroyed()
301 wl_list_init(&fsout->transform.link); in surface_destroyed()
307 struct fs_output *fsout = container_of(listener, in pending_surface_destroyed() local
310 fsout->pending.surface = NULL; in pending_surface_destroyed()
320 struct fs_output *fsout; in fs_output_create() local
323 fsout = zalloc(sizeof *fsout); in fs_output_create()
324 if (!fsout) in fs_output_create()
327 fsout->shell = shell; in fs_output_create()
328 wl_list_insert(&shell->output_list, &fsout->link); in fs_output_create()
330 fsout->output = output; in fs_output_create()
331 fsout->output_destroyed.notify = output_destroyed; in fs_output_create()
332 wl_signal_add(&output->destroy_signal, &fsout->output_destroyed); in fs_output_create()
334 fsout->surface_destroyed.notify = surface_destroyed; in fs_output_create()
335 fsout->pending.surface_destroyed.notify = pending_surface_destroyed; in fs_output_create()
336 fsout->black_view = create_black_surface(shell->compositor, fsout, in fs_output_create()
339 fsout->black_view->surface->is_mapped = true; in fs_output_create()
340 fsout->black_view->is_mapped = true; in fs_output_create()
342 &fsout->black_view->layer_link); in fs_output_create()
343 wl_list_init(&fsout->transform.link); in fs_output_create()
349 fs_output_set_surface(fsout, surf->surface, surf->method, 0, 0); in fs_output_create()
353 return fsout; in fs_output_create()
412 fs_output_center_view(struct fs_output *fsout) in fs_output_center_view() argument
416 struct weston_output *output = fsout->output; in fs_output_center_view()
418 surface_subsurfaces_boundingbox(fsout->view->surface, &surf_x, &surf_y, in fs_output_center_view()
424 weston_view_set_position(fsout->view, x, y); in fs_output_center_view()
428 fs_output_scale_view(struct fs_output *fsout, float width, float height) in fs_output_scale_view() argument
433 struct weston_view *view = fsout->view; in fs_output_scale_view()
434 struct weston_output *output = fsout->output; in fs_output_scale_view()
441 fsout->output->x - surf_x, in fs_output_scale_view()
442 fsout->output->y - surf_y); in fs_output_scale_view()
444 matrix = &fsout->transform.matrix; in fs_output_scale_view()
449 wl_list_remove(&fsout->transform.link); in fs_output_scale_view()
450 wl_list_insert(&fsout->view->geometry.transformation_list, in fs_output_scale_view()
451 &fsout->transform.link); in fs_output_scale_view()
461 fs_output_configure(struct fs_output *fsout, struct weston_surface *surface);
464 fs_output_configure_simple(struct fs_output *fsout, in fs_output_configure_simple() argument
467 struct weston_output *output = fsout->output; in fs_output_configure_simple()
471 if (fsout->pending.surface == configured_surface) in fs_output_configure_simple()
472 fs_output_apply_pending(fsout); in fs_output_configure_simple()
474 assert(fsout->view); in fs_output_configure_simple()
476 restore_output_mode(fsout->output); in fs_output_configure_simple()
478 wl_list_remove(&fsout->transform.link); in fs_output_configure_simple()
479 wl_list_init(&fsout->transform.link); in fs_output_configure_simple()
481 surface_subsurfaces_boundingbox(fsout->view->surface, in fs_output_configure_simple()
488 switch (fsout->method) { in fs_output_configure_simple()
491 fs_output_center_view(fsout); in fs_output_configure_simple()
496 fs_output_scale_view(fsout, in fs_output_configure_simple()
500 fs_output_scale_view(fsout, in fs_output_configure_simple()
507 fs_output_scale_view(fsout, in fs_output_configure_simple()
511 fs_output_scale_view(fsout, in fs_output_configure_simple()
517 fs_output_scale_view(fsout, output->width, output->height); in fs_output_configure_simple()
523 weston_view_set_position(fsout->black_view, in fs_output_configure_simple()
524 fsout->output->x - surf_x, in fs_output_configure_simple()
525 fsout->output->y - surf_y); in fs_output_configure_simple()
526 weston_surface_set_size(fsout->black_view->surface, in fs_output_configure_simple()
527 fsout->output->width, in fs_output_configure_simple()
528 fsout->output->height); in fs_output_configure_simple()
532 fs_output_configure_for_mode(struct fs_output *fsout, in fs_output_configure_for_mode() argument
539 if (fsout->pending.surface != configured_surface) { in fs_output_configure_for_mode()
542 fs_output_center_view(fsout); in fs_output_configure_for_mode()
547 surface_subsurfaces_boundingbox(fsout->pending.surface, in fs_output_configure_for_mode()
555 switch (fsout->output->transform) { in fs_output_configure_for_mode()
560 mode.width = surf_height * fsout->output->native_scale; in fs_output_configure_for_mode()
561 mode.height = surf_width * fsout->output->native_scale; in fs_output_configure_for_mode()
569 mode.width = surf_width * fsout->output->native_scale; in fs_output_configure_for_mode()
570 mode.height = surf_height * fsout->output->native_scale; in fs_output_configure_for_mode()
573 mode.refresh = fsout->pending.framerate; in fs_output_configure_for_mode()
575 ret = weston_output_mode_switch_to_temporary(fsout->output, &mode, in fs_output_configure_for_mode()
576 fsout->output->native_scale); in fs_output_configure_for_mode()
581 if (fsout->pending.mode_feedback) { in fs_output_configure_for_mode()
583 fsout->pending.mode_feedback); in fs_output_configure_for_mode()
584 wl_resource_destroy(fsout->pending.mode_feedback); in fs_output_configure_for_mode()
585 fsout->pending.mode_feedback = NULL; in fs_output_configure_for_mode()
588 fs_output_clear_pending(fsout); in fs_output_configure_for_mode()
592 if (fsout->pending.mode_feedback) { in fs_output_configure_for_mode()
594 fsout->pending.mode_feedback); in fs_output_configure_for_mode()
595 wl_resource_destroy(fsout->pending.mode_feedback); in fs_output_configure_for_mode()
596 fsout->pending.mode_feedback = NULL; in fs_output_configure_for_mode()
599 fs_output_apply_pending(fsout); in fs_output_configure_for_mode()
601 weston_view_set_position(fsout->view, in fs_output_configure_for_mode()
602 fsout->output->x - surf_x, in fs_output_configure_for_mode()
603 fsout->output->y - surf_y); in fs_output_configure_for_mode()
607 fs_output_configure(struct fs_output *fsout, in fs_output_configure() argument
610 if (fsout->pending.surface == surface) { in fs_output_configure()
611 if (fsout->pending.presented_for_mode) in fs_output_configure()
612 fs_output_configure_for_mode(fsout, surface); in fs_output_configure()
614 fs_output_configure_simple(fsout, surface); in fs_output_configure()
616 if (fsout->presented_for_mode) in fs_output_configure()
617 fs_output_configure_for_mode(fsout, surface); in fs_output_configure()
619 fs_output_configure_simple(fsout, surface); in fs_output_configure()
622 weston_output_schedule_repaint(fsout->output); in fs_output_configure()
630 struct fs_output *fsout; in configure_presented_surface() local
635 wl_list_for_each(fsout, &shell->output_list, link) in configure_presented_surface()
636 if (fsout->surface == surface || in configure_presented_surface()
637 fsout->pending.surface == surface) in configure_presented_surface()
638 fs_output_configure(fsout, surface); in configure_presented_surface()
642 fs_output_apply_pending(struct fs_output *fsout) in fs_output_apply_pending() argument
644 assert(fsout->pending.surface); in fs_output_apply_pending()
646 if (fsout->surface && fsout->surface != fsout->pending.surface) { in fs_output_apply_pending()
647 wl_list_remove(&fsout->surface_destroyed.link); in fs_output_apply_pending()
649 weston_view_destroy(fsout->view); in fs_output_apply_pending()
650 fsout->view = NULL; in fs_output_apply_pending()
652 if (wl_list_empty(&fsout->surface->views)) { in fs_output_apply_pending()
653 fsout->surface->committed = NULL; in fs_output_apply_pending()
654 fsout->surface->committed_private = NULL; in fs_output_apply_pending()
657 fsout->surface = NULL; in fs_output_apply_pending()
660 fsout->method = fsout->pending.method; in fs_output_apply_pending()
661 fsout->framerate = fsout->pending.framerate; in fs_output_apply_pending()
662 fsout->presented_for_mode = fsout->pending.presented_for_mode; in fs_output_apply_pending()
664 if (fsout->surface != fsout->pending.surface) { in fs_output_apply_pending()
665 fsout->surface = fsout->pending.surface; in fs_output_apply_pending()
667 fsout->view = weston_view_create(fsout->surface); in fs_output_apply_pending()
668 if (!fsout->view) { in fs_output_apply_pending()
672 fsout->view->is_mapped = true; in fs_output_apply_pending()
674 wl_signal_add(&fsout->surface->destroy_signal, in fs_output_apply_pending()
675 &fsout->surface_destroyed); in fs_output_apply_pending()
676 weston_layer_entry_insert(&fsout->shell->layer.view_list, in fs_output_apply_pending()
677 &fsout->view->layer_link); in fs_output_apply_pending()
680 fs_output_clear_pending(fsout); in fs_output_apply_pending()
684 fs_output_clear_pending(struct fs_output *fsout) in fs_output_clear_pending() argument
686 if (!fsout->pending.surface) in fs_output_clear_pending()
689 if (fsout->pending.mode_feedback) { in fs_output_clear_pending()
691 fsout->pending.mode_feedback); in fs_output_clear_pending()
692 wl_resource_destroy(fsout->pending.mode_feedback); in fs_output_clear_pending()
693 fsout->pending.mode_feedback = NULL; in fs_output_clear_pending()
696 wl_list_remove(&fsout->pending.surface_destroyed.link); in fs_output_clear_pending()
697 fsout->pending.surface = NULL; in fs_output_clear_pending()
701 fs_output_set_surface(struct fs_output *fsout, struct weston_surface *surface, in fs_output_set_surface() argument
705 fs_output_clear_pending(fsout); in fs_output_set_surface()
710 surface->committed_private = fsout->shell; in fs_output_set_surface()
713 fsout->pending.surface = surface; in fs_output_set_surface()
714 wl_signal_add(&fsout->pending.surface->destroy_signal, in fs_output_set_surface()
715 &fsout->pending.surface_destroyed); in fs_output_set_surface()
717 fsout->pending.method = method; in fs_output_set_surface()
718 fsout->pending.framerate = framerate; in fs_output_set_surface()
719 fsout->pending.presented_for_mode = presented_for_mode; in fs_output_set_surface()
720 } else if (fsout->surface) { in fs_output_set_surface()
722 wl_list_remove(&fsout->surface_destroyed.link); in fs_output_set_surface()
724 weston_view_destroy(fsout->view); in fs_output_set_surface()
725 fsout->view = NULL; in fs_output_set_surface()
727 if (wl_list_empty(&fsout->surface->views)) { in fs_output_set_surface()
728 fsout->surface->committed = NULL; in fs_output_set_surface()
729 fsout->surface->committed_private = NULL; in fs_output_set_surface()
732 fsout->surface = NULL; in fs_output_set_surface()
734 weston_output_schedule_repaint(fsout->output); in fs_output_set_surface()
757 struct fs_output *fsout; in fullscreen_shell_present_surface() local
776 fsout = fs_output_for_output(output); in fullscreen_shell_present_surface()
777 fs_output_set_surface(fsout, surface, method, 0, 0); in fullscreen_shell_present_surface()
781 wl_list_for_each(fsout, &shell->output_list, link) in fullscreen_shell_present_surface()
782 fs_output_set_surface(fsout, surface, method, 0, 0); in fullscreen_shell_present_surface()
799 struct fs_output *fsout = wl_resource_get_user_data(resource); in mode_feedback_destroyed() local
801 fsout->pending.mode_feedback = NULL; in mode_feedback_destroyed()
817 struct fs_output *fsout; in fullscreen_shell_present_surface_for_mode() local
820 fsout = fs_output_for_output(output); in fullscreen_shell_present_surface_for_mode()
823 fs_output_set_surface(fsout, NULL, 0, 0, 0); in fullscreen_shell_present_surface_for_mode()
828 fs_output_set_surface(fsout, surface, 0, framerate, 1); in fullscreen_shell_present_surface_for_mode()
830 fsout->pending.mode_feedback = in fullscreen_shell_present_surface_for_mode()
834 wl_resource_set_implementation(fsout->pending.mode_feedback, NULL, in fullscreen_shell_present_surface_for_mode()
835 fsout, mode_feedback_destroyed); in fullscreen_shell_present_surface_for_mode()