close Subroutine

private subroutine close(self)

Close the window (waiting for the GPU). The scene is kept, and can be shown again in another window. So are the window's settings (views, HUD texts, sky, handler, time): open again (e.g. on a host's new native window, after Qt destroyed the old one) shows them as before.

Type Bound

WindowProxy

Arguments

Type IntentOptional Attributes Name
class(WindowProxy), intent(inout) :: self

Calls

proc~~close~~CallsGraph proc~close WindowProxy%close interface~vkf_node_delete vkf_node_delete proc~close->interface~vkf_node_delete interface~vkf_viewer_delete vkf_viewer_delete proc~close->interface~vkf_viewer_delete proc~forget_handles forget_handles proc~close->proc~forget_handles proc~stop_recording WindowProxy%stop_recording proc~close->proc~stop_recording interface~vkf_viewer_set_grab vkf_viewer_set_grab proc~forget_handles->interface~vkf_viewer_set_grab proc~release DragHandle%release proc~forget_handles->proc~release proc~set_hovered DragHandle%set_hovered proc~forget_handles->proc~set_hovered interface~vkf_viewer_record_stop vkf_viewer_record_stop proc~stop_recording->interface~vkf_viewer_record_stop proc~set_time~4 SimulationClock%set_time proc~stop_recording->proc~set_time~4 proc~synchronized_to SimulationClock%synchronized_to proc~stop_recording->proc~synchronized_to proc~wall_time wall_time proc~stop_recording->proc~wall_time proc~window_wall window_wall proc~stop_recording->proc~window_wall show_state show_state proc~release->show_state proc~set_hovered->show_state proc~set_time~4->proc~set_time~4 proc~now now proc~set_time~4->proc~now proc~window_wall->proc~wall_time proc~now->proc~wall_time

Source Code

    subroutine close(self)
        class(WindowProxy), intent(inout) :: self
        logical :: ok
        integer :: k
        if (self%recording_) ok = self%stop_recording()
        call forget_handles(self)
        if (c_associated(self%viewer_)) call vkf_viewer_delete(self%viewer_)
        self%viewer_ = c_null_ptr
        self%running = .false.
        do k = 1, self%n_huds                               ! (made again for the next viewer)
            if (c_associated(self%huds(k)%node)) call vkf_node_delete(self%huds(k)%node)
            self%huds(k)%node = c_null_ptr
        end do
        self%scene_added = .false.                          ! (the scene, sky and HUD given to the next viewer)
        self%scene_seen = -1
    end subroutine close