SYMBOL INDEX (2212 symbols across 252 files) FILE: app/src/adb/adb.c function sc_adb_init (line 31) | bool function sc_adb_destroy (line 61) | void function argv_to_string (line 72) | static size_t function show_adb_installation_msg (line 104) | static void function show_adb_err_msg (line 127) | static void function process_check_success_internal (line 157) | static bool function process_check_success_intr (line 183) | static bool function sc_pid (line 204) | static sc_pid function sc_pid (line 227) | sc_pid function sc_adb_start_server (line 232) | bool function sc_adb_kill_server (line 240) | bool function sc_adb_forward (line 248) | bool function sc_adb_forward_remove (line 272) | bool function sc_adb_reverse (line 288) | bool function sc_adb_reverse_remove (line 312) | bool function sc_adb_push (line 331) | bool function sc_adb_install (line 362) | bool function sc_adb_tcpip (line 387) | bool function sc_adb_connect (line 403) | bool function sc_adb_disconnect (line 445) | bool function sc_adb_list_devices (line 454) | static bool function sc_adb_accept_device (line 507) | static bool function sc_adb_devices_select (line 550) | static size_t function sc_adb_devices_log (line 569) | static void function sc_adb_device_check_state (line 584) | static bool function sc_adb_select_device (line 606) | bool type sc_intr (line 700) | struct sc_intr type sc_intr (line 735) | struct sc_intr function sc_adb_get_device_sdk_version (line 776) | uint16_t FILE: app/src/adb/adb.h type sc_adb_device_selector_type (line 27) | enum sc_adb_device_selector_type { type sc_adb_device_selector (line 34) | struct sc_adb_device_selector { type sc_intr (line 43) | struct sc_intr type sc_intr (line 46) | struct sc_intr type sc_intr (line 49) | struct sc_intr type sc_intr (line 53) | struct sc_intr type sc_intr (line 57) | struct sc_intr type sc_intr (line 62) | struct sc_intr type sc_intr (line 66) | struct sc_intr type sc_intr (line 70) | struct sc_intr type sc_intr (line 77) | struct sc_intr type sc_intr (line 86) | struct sc_intr type sc_intr (line 95) | struct sc_intr type sc_intr (line 103) | struct sc_intr type sc_adb_device_selector (line 104) | struct sc_adb_device_selector type sc_adb_device (line 105) | struct sc_adb_device type sc_intr (line 111) | struct sc_intr type sc_intr (line 121) | struct sc_intr type sc_intr (line 127) | struct sc_intr FILE: app/src/adb/adb_device.c function sc_adb_device_destroy (line 6) | void function sc_adb_device_move (line 13) | void function sc_adb_devices_destroy (line 21) | void function sc_adb_device_get_type (line 29) | enum sc_adb_device_type FILE: app/src/adb/adb_device.h type sc_adb_device (line 10) | struct sc_adb_device { type sc_adb_device_type (line 17) | enum sc_adb_device_type { type sc_vec_adb_devices (line 23) | struct sc_vec_adb_devices type sc_adb_device (line 23) | struct sc_adb_device type sc_adb_device (line 26) | struct sc_adb_device type sc_adb_device (line 38) | struct sc_adb_device type sc_adb_device (line 38) | struct sc_adb_device type sc_vec_adb_devices (line 41) | struct sc_vec_adb_devices type sc_adb_device_type (line 46) | enum sc_adb_device_type FILE: app/src/adb/adb_parser.c function sc_adb_parse_device (line 11) | static bool function sc_adb_parse_devices (line 113) | bool FILE: app/src/adb/adb_parser.h type sc_vec_adb_devices (line 18) | struct sc_vec_adb_devices FILE: app/src/adb/adb_tunnel.c function listen_on_port (line 10) | static bool function enable_tunnel_reverse_any_port (line 15) | static bool function enable_tunnel_forward_any_port (line 77) | static bool function sc_adb_tunnel_init (line 116) | void function sc_adb_tunnel_open (line 124) | bool function sc_adb_tunnel_close (line 147) | bool FILE: app/src/adb/adb_tunnel.h type sc_adb_tunnel (line 13) | struct sc_adb_tunnel { type sc_adb_tunnel (line 24) | struct sc_adb_tunnel type sc_adb_tunnel (line 36) | struct sc_adb_tunnel type sc_intr (line 36) | struct sc_intr type sc_port_range (line 38) | struct sc_port_range type sc_adb_tunnel (line 44) | struct sc_adb_tunnel type sc_intr (line 44) | struct sc_intr FILE: app/src/android/input.h type android_metastate (line 26) | enum android_metastate { type android_input_event_type (line 85) | enum android_input_event_type { type android_keyevent_action (line 95) | enum android_keyevent_action { type android_keyevent_flags (line 114) | enum android_keyevent_flags { type android_motionevent_action (line 198) | enum android_motionevent_action { type android_motionevent_flags (line 284) | enum android_motionevent_flags { type android_motionevent_edge_touch_flags (line 301) | enum android_motionevent_edge_touch_flags { type android_motionevent_axis (line 322) | enum android_motionevent_axis { type android_motionevent_buttons (line 691) | enum android_motionevent_buttons { type android_motionevent_tool_type (line 710) | enum android_motionevent_tool_type { type android_input_source_class (line 729) | enum android_input_source_class { type android_input_source (line 750) | enum android_input_source { type android_keyboard_type (line 787) | enum android_keyboard_type { type android_motion_range (line 805) | enum android_motion_range { FILE: app/src/android/keycodes.h type android_keycode (line 26) | enum android_keycode { FILE: app/src/audio_player.c function sc_audio_player_sdl_callback (line 10) | static void SDLCALL function sc_audio_player_frame_sink_push (line 23) | static bool function sc_audio_player_frame_sink_open (line 31) | static bool function sc_audio_player_frame_sink_close (line 94) | static void function sc_audio_player_init (line 105) | void FILE: app/src/audio_player.h type sc_audio_player (line 12) | struct sc_audio_player { type sc_audio_player (line 30) | struct sc_audio_player FILE: app/src/audio_regulator.c function sc_audio_regulator_pull (line 62) | void type sc_audio_regulator (line 122) | struct sc_audio_regulator function sc_audio_regulator_push (line 140) | bool function sc_audio_regulator_init (line 365) | bool function sc_audio_regulator_destroy (line 450) | void FILE: app/src/audio_regulator.h type sc_audio_regulator (line 18) | struct sc_audio_regulator { type sc_audio_regulator (line 66) | struct sc_audio_regulator type sc_audio_regulator (line 70) | struct sc_audio_regulator type sc_audio_regulator (line 73) | struct sc_audio_regulator type sc_audio_regulator (line 76) | struct sc_audio_regulator FILE: app/src/cli.c type sc_option (line 119) | struct sc_option { type sc_shortcut (line 132) | struct sc_shortcut { type sc_envvar (line 137) | struct sc_envvar { type sc_exit_status (line 142) | struct sc_exit_status { type sc_getopt_adapter (line 147) | struct sc_getopt_adapter { type sc_option (line 152) | struct sc_option type sc_shortcut (line 1068) | struct sc_shortcut type sc_envvar (line 1212) | struct sc_envvar type sc_exit_status (line 1232) | struct sc_exit_status type sc_strbuf (line 1249) | struct sc_strbuf type sc_option (line 1255) | struct sc_option type option (line 1280) | struct option type option (line 1282) | struct option type sc_option (line 1291) | struct sc_option type option (line 1300) | struct option type option (line 1321) | struct option function sc_getopt_adapter_init (line 1326) | static bool function sc_getopt_adapter_destroy (line 1342) | static void function print_option_usage_header (line 1348) | static void function print_option_usage (line 1406) | static void function print_shortcuts_intro (line 1427) | static void function print_shortcut (line 1442) | static void function print_envvar (line 1466) | static void function print_exit_status (line 1483) | static void function scrcpy_print_usage (line 1502) | void function parse_integer_arg (line 1547) | static bool function parse_integers_arg (line 1572) | static size_t function parse_bit_rate (line 1593) | static bool function parse_max_size (line 1607) | static bool function parse_buffering_time (line 1619) | static bool function parse_audio_output_buffer (line 1636) | static bool function parse_display_ime_policy (line 1649) | static bool function parse_orientation (line 1668) | static bool function parse_capture_orientation (line 1707) | static bool function parse_window_position (line 1733) | static bool function parse_window_dimension (line 1754) | static bool function parse_port_range (line 1767) | static bool function parse_display_id (line 1795) | static bool function parse_log_level (line 1807) | static bool function parse_shortcut_mods_item (line 1838) | static enum sc_shortcut_mod function parse_shortcut_mods (line 1877) | static bool function sc_parse_shortcut_mods (line 1909) | bool function get_record_format (line 1915) | static enum sc_record_format function parse_record_format (line 1944) | static bool function parse_ip (line 1957) | static bool function parse_port (line 1962) | static bool function guess_record_format (line 1972) | static enum sc_record_format function parse_video_codec (line 1983) | static bool function parse_audio_codec (line 2001) | static bool function parse_video_source (line 2024) | static bool function parse_audio_source (line 2040) | static bool function parse_camera_facing (line 2104) | static bool function parse_camera_fps (line 2132) | static bool function parse_keyboard (line 2144) | static bool function parse_mouse (line 2176) | static bool function parse_gamepad (line 2207) | static bool function parse_time_limit (line 2233) | static bool function parse_screen_off_timeout (line 2245) | static bool function parse_pause_on_exit (line 2259) | static bool function parse_mouse_binding (line 2282) | static bool function parse_mouse_binding_set (line 2310) | static bool function parse_mouse_bindings (line 2330) | static bool function parse_args_with_getopt (line 2356) | static bool function sc_get_pause_on_exit (line 3323) | static enum sc_pause_on_exit function scrcpy_parse_args (line 3354) | bool FILE: app/src/cli.h type sc_pause_on_exit (line 10) | enum sc_pause_on_exit { type scrcpy_cli_args (line 16) | struct scrcpy_cli_args { type scrcpy_cli_args (line 27) | struct scrcpy_cli_args FILE: app/src/clock.c function sc_clock_init (line 11) | void function sc_clock_update (line 17) | void function sc_tick (line 34) | sc_tick FILE: app/src/clock.h type sc_clock_point (line 8) | struct sc_clock_point { type sc_clock (line 29) | struct sc_clock { type sc_clock (line 35) | struct sc_clock type sc_clock (line 38) | struct sc_clock type sc_clock (line 41) | struct sc_clock FILE: app/src/compat.c function asprintf (line 26) | int asprintf(char **strp, const char *fmt, ...) { function vasprintf (line 36) | int vasprintf(char **strp, const char *fmt, va_list ap) { function rand_iter48 (line 62) | static inline uint64_t rand_iter48(uint64_t x) { function rand_iter48_xsubi (line 67) | static uint64_t rand_iter48_xsubi(unsigned short xsubi[3]) { function nrand48 (line 82) | long nrand48(unsigned short xsubi[3]) { function jrand48 (line 89) | long jrand48(unsigned short xsubi[3]) { FILE: app/src/control_msg.c function write_position (line 67) | static void function write_string_payload (line 76) | static size_t function write_string (line 87) | static size_t function write_string_tiny (line 95) | static size_t function sc_control_msg_serialize (line 103) | size_t function sc_control_msg_log (line 199) | void function sc_control_msg_is_droppable (line 327) | bool function sc_control_msg_destroy (line 337) | void FILE: app/src/control_msg.h type sc_control_msg_type (line 27) | enum sc_control_msg_type { type sc_copy_key (line 48) | enum sc_copy_key { type sc_control_msg (line 54) | struct sc_control_msg { type sc_control_msg (line 120) | struct sc_control_msg type sc_control_msg (line 123) | struct sc_control_msg type sc_control_msg (line 128) | struct sc_control_msg type sc_control_msg (line 131) | struct sc_control_msg FILE: app/src/controller.c function sc_controller_receiver_on_ended (line 10) | static void function sc_controller_init (line 20) | bool function sc_controller_configure (line 69) | void function sc_controller_destroy (line 77) | void function sc_controller_push_msg (line 92) | bool function process_msg (line 126) | static bool function run_controller (line 146) | static int function sc_controller_start (line 186) | bool function sc_controller_stop (line 206) | void function sc_controller_join (line 214) | void FILE: app/src/controller.h type sc_control_msg_queue (line 15) | struct sc_control_msg_queue type sc_control_msg (line 15) | struct sc_control_msg type sc_controller (line 17) | struct sc_controller { type sc_controller_callbacks (line 30) | struct sc_controller_callbacks { type sc_controller (line 36) | struct sc_controller type sc_controller_callbacks (line 37) | struct sc_controller_callbacks type sc_controller (line 41) | struct sc_controller type sc_acksync (line 42) | struct sc_acksync type sc_uhid_devices (line 43) | struct sc_uhid_devices type sc_controller (line 46) | struct sc_controller type sc_controller (line 49) | struct sc_controller type sc_controller (line 52) | struct sc_controller type sc_controller (line 55) | struct sc_controller type sc_controller (line 58) | struct sc_controller type sc_control_msg (line 59) | struct sc_control_msg FILE: app/src/coords.h type sc_size (line 6) | struct sc_size { type sc_point (line 11) | struct sc_point { type sc_position (line 16) | struct sc_position { FILE: app/src/decoder.c function sc_decoder_open (line 12) | static bool function sc_decoder_close (line 30) | static void function sc_decoder_push (line 36) | static bool function sc_decoder_packet_sink_open (line 76) | static bool function sc_decoder_packet_sink_close (line 82) | static void function sc_decoder_packet_sink_push (line 88) | static bool function sc_decoder_init (line 95) | void FILE: app/src/decoder.h type sc_decoder (line 11) | struct sc_decoder { type sc_decoder (line 23) | struct sc_decoder FILE: app/src/delay_buffer.c function sc_delayed_frame_init (line 12) | static bool function sc_delayed_frame_destroy (line 29) | static void function run_buffering (line 35) | static int function sc_delay_buffer_frame_sink_open (line 110) | static bool function sc_delay_buffer_frame_sink_close (line 159) | static void function sc_delay_buffer_frame_sink_push (line 178) | static bool function sc_delay_buffer_init (line 224) | void FILE: app/src/delay_buffer.h type AVFrame (line 19) | typedef struct AVFrame AVFrame; type sc_delayed_frame (line 21) | struct sc_delayed_frame { type sc_delayed_frame_queue (line 28) | struct sc_delayed_frame_queue type sc_delayed_frame (line 28) | struct sc_delayed_frame type sc_delay_buffer (line 30) | struct sc_delay_buffer { type sc_delay_buffer_callbacks (line 47) | struct sc_delay_buffer_callbacks { type sc_delay_buffer (line 60) | struct sc_delay_buffer FILE: app/src/demuxer.c function sc_demuxer_to_avcodec_id (line 19) | static enum AVCodecID function sc_demuxer_recv_codec_id (line 54) | static bool function sc_demuxer_recv_video_size (line 66) | static bool function sc_demuxer_recv_packet (line 80) | static bool function run_demuxer (line 137) | static int function sc_demuxer_init (line 285) | void function sc_demuxer_start (line 300) | bool function sc_demuxer_join (line 313) | void FILE: app/src/demuxer.h type sc_demuxer (line 12) | struct sc_demuxer { type sc_demuxer_status (line 24) | enum sc_demuxer_status { type sc_demuxer_callbacks (line 30) | struct sc_demuxer_callbacks { type sc_demuxer (line 37) | struct sc_demuxer type sc_demuxer_callbacks (line 38) | struct sc_demuxer_callbacks type sc_demuxer (line 41) | struct sc_demuxer type sc_demuxer (line 44) | struct sc_demuxer FILE: app/src/device_msg.c function sc_device_msg_deserialize (line 10) | ssize_t function sc_device_msg_destroy (line 80) | void FILE: app/src/device_msg.h type sc_device_msg_type (line 14) | enum sc_device_msg_type { type sc_device_msg (line 20) | struct sc_device_msg { type sc_device_msg (line 40) | struct sc_device_msg type sc_device_msg (line 43) | struct sc_device_msg FILE: app/src/display.c function sc_display_init_novideo_icon (line 10) | static bool function sc_display_init (line 31) | bool function sc_display_destroy (line 114) | void function SDL_Texture (line 128) | static SDL_Texture * function sc_display_set_pending_size (line 156) | static inline void function sc_display_set_pending_frame (line 163) | static bool type sc_display (line 187) | struct sc_display function sc_display_apply_pending (line 190) | static bool function sc_display_set_texture_size_internal (line 218) | static bool function sc_display_set_texture_size (line 236) | enum sc_display_result function SDL_YUV_CONVERSION_MODE (line 248) | static SDL_YUV_CONVERSION_MODE function sc_display_update_texture_internal (line 254) | static bool function sc_display_update_texture (line 285) | enum sc_display_result function sc_display_render (line 301) | enum sc_display_result FILE: app/src/display.h type sc_display (line 19) | struct sc_display { type sc_display_result (line 41) | enum sc_display_result { type sc_display (line 48) | struct sc_display type sc_display (line 52) | struct sc_display type sc_display_result (line 54) | enum sc_display_result type sc_display (line 55) | struct sc_display type sc_size (line 55) | struct sc_size type sc_display_result (line 57) | enum sc_display_result type sc_display (line 58) | struct sc_display type sc_display_result (line 60) | enum sc_display_result type sc_display (line 61) | struct sc_display type sc_orientation (line 62) | enum sc_orientation FILE: app/src/events.c function sc_push_event_impl (line 8) | bool function sc_post_to_main_thread (line 24) | bool function task_event_filter (line 51) | static int SDLCALL function sc_reject_new_runnables (line 63) | void FILE: app/src/file_pusher.c function sc_file_pusher_request_destroy (line 12) | static void function sc_file_pusher_init (line 17) | bool function sc_file_pusher_destroy (line 61) | void function sc_file_pusher_request (line 75) | bool function run_file_pusher (line 111) | static int function sc_file_pusher_start (line 160) | bool function sc_file_pusher_stop (line 173) | void function sc_file_pusher_join (line 184) | void FILE: app/src/file_pusher.h type sc_file_pusher_action (line 12) | enum sc_file_pusher_action { type sc_file_pusher_request (line 17) | struct sc_file_pusher_request { type sc_file_pusher_request_queue (line 22) | struct sc_file_pusher_request_queue type sc_file_pusher_request (line 22) | struct sc_file_pusher_request type sc_file_pusher (line 24) | struct sc_file_pusher { type sc_file_pusher (line 38) | struct sc_file_pusher type sc_file_pusher (line 42) | struct sc_file_pusher type sc_file_pusher (line 45) | struct sc_file_pusher type sc_file_pusher (line 48) | struct sc_file_pusher type sc_file_pusher (line 51) | struct sc_file_pusher type sc_file_pusher (line 55) | struct sc_file_pusher type sc_file_pusher_action (line 56) | enum sc_file_pusher_action FILE: app/src/fps_counter.c function sc_fps_counter_init (line 10) | bool function sc_fps_counter_destroy (line 30) | void function is_started (line 36) | static inline bool function set_started (line 41) | static inline void function display_fps (line 47) | static void function check_interval_expired (line 60) | static void function run_fps_counter (line 75) | static int function sc_fps_counter_start (line 97) | bool function sc_fps_counter_stop (line 126) | void function sc_fps_counter_is_started (line 133) | bool function sc_fps_counter_interrupt (line 138) | void function sc_fps_counter_join (line 151) | void function sc_fps_counter_add_rendered_frame (line 162) | void function sc_fps_counter_add_skipped_frame (line 175) | void FILE: app/src/fps_counter.h type sc_fps_counter (line 12) | struct sc_fps_counter { type sc_fps_counter (line 31) | struct sc_fps_counter type sc_fps_counter (line 34) | struct sc_fps_counter type sc_fps_counter (line 37) | struct sc_fps_counter type sc_fps_counter (line 40) | struct sc_fps_counter type sc_fps_counter (line 43) | struct sc_fps_counter type sc_fps_counter (line 48) | struct sc_fps_counter type sc_fps_counter (line 51) | struct sc_fps_counter type sc_fps_counter (line 54) | struct sc_fps_counter type sc_fps_counter (line 57) | struct sc_fps_counter FILE: app/src/frame_buffer.c function sc_frame_buffer_init (line 7) | bool function sc_frame_buffer_destroy (line 35) | void function swap_frames (line 42) | static inline void function sc_frame_buffer_push (line 49) | bool function sc_frame_buffer_consume (line 77) | void FILE: app/src/frame_buffer.h type AVFrame (line 12) | typedef struct AVFrame AVFrame; type sc_frame_buffer (line 23) | struct sc_frame_buffer { type sc_frame_buffer (line 33) | struct sc_frame_buffer type sc_frame_buffer (line 36) | struct sc_frame_buffer type sc_frame_buffer (line 39) | struct sc_frame_buffer type sc_frame_buffer (line 43) | struct sc_frame_buffer FILE: app/src/hid/hid_event.h type sc_hid_input (line 11) | struct sc_hid_input { type sc_hid_open (line 17) | struct sc_hid_open { type sc_hid_close (line 23) | struct sc_hid_close { FILE: app/src/hid/hid_gamepad.c function sc_hid_gamepad_slot_init (line 199) | static void function sc_hid_gamepad_slot_find (line 213) | static ssize_t function sc_hid_gamepad_init (line 225) | void function sc_hid_gamepad_slot_get_id (line 232) | static inline uint16_t function sc_hid_gamepad_generate_open (line 238) | bool function sc_hid_gamepad_generate_close (line 259) | bool function sc_hid_gamepad_get_dpad_value (line 278) | static uint8_t function sc_hid_gamepad_event_from_slot (line 312) | static void function sc_hid_gamepad_get_button_id (line 331) | static uint32_t function sc_hid_gamepad_generate_input_from_button (line 370) | bool function sc_hid_gamepad_generate_input_from_axis (line 409) | bool FILE: app/src/hid/hid_gamepad.h type sc_hid_gamepad_slot (line 16) | struct sc_hid_gamepad_slot { type sc_hid_gamepad (line 27) | struct sc_hid_gamepad { type sc_hid_gamepad (line 32) | struct sc_hid_gamepad type sc_hid_gamepad (line 35) | struct sc_hid_gamepad type sc_hid_open (line 36) | struct sc_hid_open type sc_hid_gamepad (line 40) | struct sc_hid_gamepad type sc_hid_close (line 41) | struct sc_hid_close type sc_hid_gamepad (line 45) | struct sc_hid_gamepad type sc_hid_input (line 46) | struct sc_hid_input type sc_gamepad_button_event (line 47) | struct sc_gamepad_button_event type sc_hid_gamepad (line 50) | struct sc_hid_gamepad type sc_hid_input (line 51) | struct sc_hid_input type sc_gamepad_axis_event (line 52) | struct sc_gamepad_axis_event FILE: app/src/hid/hid_keyboard.c function sc_hid_keyboard_input_init (line 202) | static void function sc_hid_mod_from_sdl_keymod (line 214) | static uint16_t function sc_hid_keyboard_init (line 244) | void function scancode_is_modifier (line 249) | static inline bool function sc_hid_keyboard_generate_input_from_key (line 254) | bool function sc_hid_keyboard_generate_input_from_mods (line 312) | bool function sc_hid_keyboard_generate_open (line 337) | void sc_hid_keyboard_generate_open(struct sc_hid_open *hid_open) { function sc_hid_keyboard_generate_close (line 343) | void sc_hid_keyboard_generate_close(struct sc_hid_close *hid_close) { FILE: app/src/hid/hid_keyboard.h type sc_hid_keyboard (line 32) | struct sc_hid_keyboard { type sc_hid_keyboard (line 37) | struct sc_hid_keyboard type sc_hid_open (line 40) | struct sc_hid_open type sc_hid_close (line 43) | struct sc_hid_close type sc_hid_keyboard (line 46) | struct sc_hid_keyboard type sc_hid_input (line 47) | struct sc_hid_input type sc_key_event (line 48) | struct sc_key_event type sc_hid_input (line 51) | struct sc_hid_input FILE: app/src/hid/hid_mouse.c function sc_hid_mouse_input_init (line 141) | static void function sc_hid_buttons_from_buttons_state (line 148) | static uint8_t function sc_hid_mouse_generate_input_from_motion (line 169) | void function sc_hid_mouse_generate_input_from_click (line 182) | void function sc_hid_mouse_generate_input_from_scroll (line 195) | bool function sc_hid_mouse_generate_open (line 214) | void sc_hid_mouse_generate_open(struct sc_hid_open *hid_open) { function sc_hid_mouse_generate_close (line 220) | void sc_hid_mouse_generate_close(struct sc_hid_close *hid_close) { FILE: app/src/hid/hid_mouse.h type sc_hid_open (line 12) | struct sc_hid_open type sc_hid_close (line 15) | struct sc_hid_close type sc_hid_input (line 18) | struct sc_hid_input type sc_mouse_motion_event (line 19) | struct sc_mouse_motion_event type sc_hid_input (line 22) | struct sc_hid_input type sc_mouse_click_event (line 23) | struct sc_mouse_click_event type sc_hid_input (line 26) | struct sc_hid_input type sc_mouse_scroll_event (line 27) | struct sc_mouse_scroll_event FILE: app/src/icon.c function AVFrame (line 54) | static AVFrame * type SDL_PixelFormatEnum (line 162) | typedef int SDL_PixelFormatEnum; function SDL_PixelFormatEnum (line 165) | static SDL_PixelFormatEnum function SDL_Surface (line 187) | static SDL_Surface * function SDL_Surface (line 270) | SDL_Surface * function scrcpy_icon_destroy (line 282) | void FILE: app/src/input_events.h type sc_mod (line 45) | enum sc_mod { type sc_action (line 59) | enum sc_action { type sc_keycode (line 64) | enum sc_keycode { type sc_scancode (line 197) | enum sc_scancode { type sc_mouse_button (line 316) | enum sc_mouse_button { type sc_gamepad_axis (line 328) | enum sc_gamepad_axis { type sc_gamepad_button (line 338) | enum sc_gamepad_button { type sc_mod (line 357) | enum sc_mod type sc_keycode (line 360) | enum sc_keycode type sc_scancode (line 363) | enum sc_scancode type sc_touch_action (line 366) | enum sc_touch_action { type sc_key_event (line 372) | struct sc_key_event { type sc_text_event (line 380) | struct sc_text_event { type sc_mouse_click_event (line 384) | struct sc_mouse_click_event { type sc_mouse_scroll_event (line 392) | struct sc_mouse_scroll_event { type sc_mouse_motion_event (line 401) | struct sc_mouse_motion_event { type sc_touch_event (line 409) | struct sc_touch_event { type sc_gamepad_device_event (line 421) | struct sc_gamepad_device_event { type sc_gamepad_button_event (line 425) | struct sc_gamepad_button_event { type sc_gamepad_axis_event (line 431) | struct sc_gamepad_axis_event { function sc_mods_state_from_sdl (line 437) | static inline uint16_t function sc_keycode_from_sdl (line 442) | static inline enum sc_keycode function sc_scancode_from_sdl (line 447) | static inline enum sc_scancode function sc_action_from_sdl_keyboard_type (line 452) | static inline enum sc_action function sc_action_from_sdl_mousebutton_type (line 461) | static inline enum sc_action function sc_touch_action_from_sdl (line 470) | static inline enum sc_touch_action function sc_mouse_button_from_sdl (line 483) | static inline enum sc_mouse_button function sc_mouse_buttons_state_from_sdl (line 493) | static inline uint8_t function sc_gamepad_axis_from_sdl (line 501) | static inline enum sc_gamepad_axis function sc_gamepad_button_from_sdl (line 511) | static inline enum sc_gamepad_button function sc_action_from_sdl_controllerbutton_type (line 521) | static inline enum sc_action FILE: app/src/input_manager.c function sc_input_manager_init (line 15) | void function send_keycode (line 51) | static void function action_home (line 71) | static inline void function action_back (line 76) | static inline void function action_app_switch (line 81) | static inline void function action_power (line 86) | static inline void function action_volume_up (line 91) | static inline void function action_volume_down (line 96) | static inline void function action_menu (line 101) | static inline void function press_back_or_turn_screen_on (line 108) | static void function expand_notification_panel (line 124) | static void function expand_settings_panel (line 136) | static void function collapse_panels (line 148) | static void function get_device_clipboard (line 160) | static bool function set_device_clipboard (line 176) | static bool function set_display_power (line 209) | static void function switch_fps_counter_state (line 222) | static void function clipboard_paste (line 236) | static void function rotate_device (line 267) | static void function open_hard_keyboard_settings (line 279) | static void function reset_video (line 291) | static void function apply_orientation_transform (line 303) | static void function sc_input_manager_process_text_input (line 312) | static void function simulate_virtual_finger (line 333) | static bool function inverse_point (line 357) | static struct sc_point function sc_input_manager_process_key (line 369) | static void function sc_input_manager_get_position (line 615) | static struct sc_position function sc_input_manager_process_mouse_motion (line 632) | static void function sc_input_manager_process_touch (line 667) | static void function sc_input_manager_get_binding (line 697) | static enum sc_mouse_binding function sc_input_manager_process_mouse_button (line 716) | static void function sc_input_manager_process_mouse_wheel (line 883) | static void function sc_input_manager_process_gamepad_device (line 914) | static void function sc_input_manager_process_gamepad_axis (line 955) | static void function sc_input_manager_process_gamepad_button (line 971) | static void function is_apk (line 987) | static bool function sc_input_manager_process_file (line 993) | static void function sc_input_manager_handle_event (line 1015) | void FILE: app/src/input_manager.h type sc_input_manager (line 18) | struct sc_input_manager { type sc_input_manager_params (line 49) | struct sc_input_manager_params { type sc_input_manager (line 64) | struct sc_input_manager type sc_input_manager_params (line 65) | struct sc_input_manager_params type sc_input_manager (line 68) | struct sc_input_manager FILE: app/src/keyboard_sdk.c function convert_keycode_action (line 20) | static enum android_keyevent_action function convert_keycode (line 29) | static bool function autocomplete_metastate (line 196) | static enum android_metastate function convert_meta_state (line 215) | static enum android_metastate function convert_input_key (line 253) | static bool function sc_key_processor_process_key (line 270) | static void function sc_key_processor_process_text (line 298) | static void function sc_keyboard_sdk_init (line 330) | void FILE: app/src/keyboard_sdk.h type sc_keyboard_sdk (line 12) | struct sc_keyboard_sdk { type sc_keyboard_sdk (line 26) | struct sc_keyboard_sdk type sc_controller (line 27) | struct sc_controller type sc_key_inject_mode (line 28) | enum sc_key_inject_mode FILE: app/src/main.c function main_scrcpy (line 25) | static int function main (line 106) | int FILE: app/src/mouse_capture.c function sc_mouse_capture_init (line 6) | void function sc_mouse_capture_is_capture_key (line 14) | static inline bool function sc_mouse_capture_handle_event (line 19) | bool function sc_mouse_capture_set_active (line 85) | void function sc_mouse_capture_is_active (line 113) | bool function sc_mouse_capture_toggle (line 119) | void FILE: app/src/mouse_capture.h type sc_mouse_capture (line 10) | struct sc_mouse_capture { type sc_mouse_capture (line 21) | struct sc_mouse_capture type sc_mouse_capture (line 25) | struct sc_mouse_capture type sc_mouse_capture (line 28) | struct sc_mouse_capture type sc_mouse_capture (line 31) | struct sc_mouse_capture type sc_mouse_capture (line 35) | struct sc_mouse_capture FILE: app/src/mouse_sdk.c function convert_mouse_buttons (line 15) | static enum android_motionevent_buttons function convert_mouse_action (line 36) | static enum android_motionevent_action function convert_touch_action (line 45) | static enum android_motionevent_action function sc_mouse_processor_process_mouse_motion (line 58) | static void function sc_mouse_processor_process_mouse_click (line 85) | static void function sc_mouse_processor_process_mouse_scroll (line 107) | static void function sc_mouse_processor_process_touch (line 127) | static void function sc_mouse_sdk_init (line 148) | void FILE: app/src/mouse_sdk.h type sc_mouse_sdk (line 11) | struct sc_mouse_sdk { type sc_mouse_sdk (line 19) | struct sc_mouse_sdk type sc_controller (line 19) | struct sc_controller FILE: app/src/opengl.c function sc_opengl_init (line 8) | void function sc_opengl_version_at_least (line 43) | bool FILE: app/src/opengl.h type sc_opengl (line 9) | struct sc_opengl { type sc_opengl (line 29) | struct sc_opengl type sc_opengl (line 32) | struct sc_opengl FILE: app/src/options.c type scrcpy_options (line 5) | struct scrcpy_options function sc_orientation_apply (line 118) | enum sc_orientation FILE: app/src/options.h type sc_log_level (line 12) | enum sc_log_level { type sc_record_format (line 20) | enum sc_record_format { function sc_record_format_is_audio_only (line 32) | static inline bool type sc_codec (line 42) | enum sc_codec { type sc_video_source (line 52) | enum sc_video_source { type sc_audio_source (line 57) | enum sc_audio_source { type sc_camera_facing (line 72) | enum sc_camera_facing { type sc_orientation (line 83) | enum sc_orientation { // v v v type sc_orientation_lock (line 94) | enum sc_orientation_lock { type sc_display_ime_policy (line 100) | enum sc_display_ime_policy { function sc_orientation_is_mirror (line 107) | static inline bool function sc_orientation_is_swap (line 114) | static inline bool function sc_orientation_get_rotation (line 120) | static inline enum sc_orientation type sc_orientation (line 126) | enum sc_orientation type sc_orientation (line 127) | enum sc_orientation type sc_orientation (line 127) | enum sc_orientation type sc_orientation (line 130) | enum sc_orientation type sc_keyboard_input_mode (line 153) | enum sc_keyboard_input_mode { type sc_mouse_input_mode (line 162) | enum sc_mouse_input_mode { type sc_gamepad_input_mode (line 171) | enum sc_gamepad_input_mode { type sc_mouse_binding (line 178) | enum sc_mouse_binding { type sc_mouse_binding_set (line 188) | struct sc_mouse_binding_set { type sc_mouse_bindings (line 195) | struct sc_mouse_bindings { type sc_key_inject_mode (line 200) | enum sc_key_inject_mode { type sc_shortcut_mod (line 214) | enum sc_shortcut_mod { type sc_port_range (line 223) | struct sc_port_range { type scrcpy_options (line 230) | struct scrcpy_options { type scrcpy_options (line 332) | struct scrcpy_options FILE: app/src/packet_merger.c function sc_packet_merger_init (line 9) | void function sc_packet_merger_destroy (line 14) | void function sc_packet_merger_merge (line 19) | bool FILE: app/src/packet_merger.h type sc_packet_merger (line 23) | struct sc_packet_merger { type sc_packet_merger (line 29) | struct sc_packet_merger type sc_packet_merger (line 32) | struct sc_packet_merger type sc_packet_merger (line 41) | struct sc_packet_merger FILE: app/src/receiver.c type sc_uhid_output_task_data (line 13) | struct sc_uhid_output_task_data { function sc_receiver_init (line 20) | bool function sc_receiver_destroy (line 39) | void function task_set_clipboard (line 44) | static void function task_uhid_output (line 63) | static void function process_msg (line 76) | static void function process_msgs (line 156) | static ssize_t function run_receiver (line 180) | static int function sc_receiver_start (line 219) | bool function sc_receiver_join (line 233) | void FILE: app/src/receiver.h type sc_receiver (line 15) | struct sc_receiver { type sc_receiver_callbacks (line 27) | struct sc_receiver_callbacks { type sc_receiver (line 32) | struct sc_receiver type sc_receiver_callbacks (line 33) | struct sc_receiver_callbacks type sc_receiver (line 36) | struct sc_receiver type sc_receiver (line 39) | struct sc_receiver type sc_receiver (line 44) | struct sc_receiver FILE: app/src/recorder.c function AVOutputFormat (line 23) | static const AVOutputFormat * function AVPacket (line 40) | static AVPacket * function sc_recorder_queue_clear (line 56) | static void type sc_record_format (line 65) | enum sc_record_format function sc_recorder_set_extradata (line 85) | static bool function sc_recorder_rescale_packet (line 101) | static inline void function sc_recorder_write_stream (line 106) | static bool function sc_recorder_write_video (line 123) | static inline bool function sc_recorder_write_audio (line 128) | static inline bool function sc_recorder_open_output_file (line 133) | static bool function sc_recorder_close_output_file (line 176) | static void function sc_recorder_must_wait_for_config_packets (line 182) | static inline bool function sc_recorder_process_header (line 199) | static bool function sc_recorder_process_packets (line 284) | static bool function sc_recorder_record (line 461) | static bool function run_recorder (line 473) | static int function sc_recorder_set_orientation (line 506) | static bool function sc_recorder_video_packet_sink_open (line 542) | static bool function sc_recorder_video_packet_sink_close (line 586) | static void function sc_recorder_video_packet_sink_push (line 599) | static bool function sc_recorder_audio_packet_sink_open (line 636) | static bool function sc_recorder_audio_packet_sink_close (line 671) | static void function sc_recorder_audio_packet_sink_push (line 685) | static bool function sc_recorder_audio_packet_sink_disable (line 723) | static void function sc_recorder_stream_init (line 739) | static void function sc_recorder_init (line 745) | bool function sc_recorder_start (line 823) | bool function sc_recorder_stop (line 835) | void function sc_recorder_join (line 843) | void function sc_recorder_destroy (line 848) | void FILE: app/src/recorder.h type sc_recorder_queue (line 16) | struct sc_recorder_queue type sc_recorder_stream (line 18) | struct sc_recorder_stream { type sc_recorder (line 23) | struct sc_recorder { type sc_recorder_callbacks (line 65) | struct sc_recorder_callbacks { type sc_recorder (line 71) | struct sc_recorder type sc_record_format (line 72) | enum sc_record_format type sc_orientation (line 73) | enum sc_orientation type sc_recorder_callbacks (line 74) | struct sc_recorder_callbacks type sc_recorder (line 77) | struct sc_recorder type sc_recorder (line 80) | struct sc_recorder type sc_recorder (line 83) | struct sc_recorder type sc_recorder (line 86) | struct sc_recorder FILE: app/src/scrcpy.c type scrcpy (line 48) | struct scrcpy { function BOOL (line 95) | static BOOL WINAPI windows_ctrl_handler(DWORD ctrl_type) { function sdl_set_hints (line 104) | static void function sdl_configure (line 157) | static void function event_loop (line 178) | static enum scrcpy_exit_code function terminate_event_loop (line 220) | static void function await_for_server (line 236) | static bool function sc_recorder_on_ended (line 262) | static void function sc_video_demuxer_on_ended (line 273) | static void function sc_audio_demuxer_on_ended (line 289) | static void function sc_controller_on_ended (line 307) | static void function sc_server_on_connection_failed (line 322) | static void function sc_server_on_connected (line 330) | static void function sc_server_on_disconnected (line 338) | static void function sc_timeout_on_timeout (line 348) | static void function scrcpy_generate_scid (line 357) | static uint32_t function init_sdl_gamepads (line 365) | static void function scrcpy (line 380) | enum scrcpy_exit_code FILE: app/src/scrcpy.h type scrcpy_exit_code (line 8) | enum scrcpy_exit_code { type scrcpy_exit_code (line 19) | enum scrcpy_exit_code type scrcpy_options (line 20) | struct scrcpy_options FILE: app/src/screen.c function get_oriented_size (line 16) | static inline struct sc_size function get_window_size (line 30) | static struct sc_size function get_window_position (line 42) | static struct sc_point function set_window_size (line 55) | static void function get_preferred_display_bounds (line 64) | static bool function is_optimal_size (line 77) | static bool function get_optimal_size (line 92) | static struct sc_size function get_initial_optimal_size (line 134) | static inline struct sc_size function sc_screen_is_relative_mode (line 159) | static inline bool function sc_screen_update_content_rect (line 165) | static void function sc_screen_render (line 208) | static void function sc_screen_render_novideo (line 221) | static void function event_watcher (line 238) | static int function sc_screen_frame_sink_open (line 253) | static bool function sc_screen_frame_sink_close (line 288) | static void function sc_screen_frame_sink_push (line 299) | static bool function sc_screen_init (line 325) | bool function sc_screen_show_initial_window (line 487) | static void function sc_screen_hide_window (line 513) | void function sc_screen_interrupt (line 518) | void function sc_screen_join (line 523) | void function sc_screen_destroy (line 528) | void function resize_for_content (line 540) | static void function set_content_size (line 556) | static void function apply_pending_resize (line 572) | static void function sc_screen_set_orientation (line 586) | void function sc_screen_init_size (line 606) | static bool function prepare_for_frame (line 623) | static enum sc_display_result function sc_screen_apply_frame (line 644) | static bool function sc_screen_update_frame (line 685) | static bool function sc_screen_set_paused (line 708) | void function sc_screen_toggle_fullscreen (line 737) | void function sc_screen_resize_to_fit (line 756) | void function sc_screen_resize_to_pixel_perfect (line 782) | void function sc_screen_handle_event (line 801) | bool function sc_screen_convert_drawable_to_frame_coords (line 874) | struct sc_point function sc_screen_convert_window_to_frame_coords (line 930) | struct sc_point function sc_screen_hidpi_scale_coords (line 937) | void FILE: app/src/screen.h type sc_screen (line 25) | struct sc_screen { type sc_screen_params (line 74) | struct sc_screen_params { type sc_screen (line 107) | struct sc_screen type sc_screen_params (line 107) | struct sc_screen_params type sc_screen (line 112) | struct sc_screen type sc_screen (line 116) | struct sc_screen type sc_screen (line 120) | struct sc_screen type sc_screen (line 127) | struct sc_screen type sc_screen (line 131) | struct sc_screen type sc_screen (line 135) | struct sc_screen type sc_screen (line 139) | struct sc_screen type sc_screen (line 143) | struct sc_screen type sc_orientation (line 144) | enum sc_orientation type sc_screen (line 148) | struct sc_screen type sc_screen (line 153) | struct sc_screen type sc_point (line 157) | struct sc_point type sc_screen (line 158) | struct sc_screen type sc_point (line 163) | struct sc_point type sc_screen (line 164) | struct sc_screen type sc_screen (line 172) | struct sc_screen FILE: app/src/server.c function push_server (line 56) | static bool type sc_log_level (line 73) | enum sc_log_level function sc_server_sleep (line 91) | static bool type sc_codec (line 106) | enum sc_codec type sc_camera_facing (line 129) | enum sc_camera_facing type sc_audio_source (line 144) | enum sc_audio_source type sc_display_ime_policy (line 175) | enum sc_display_ime_policy function validate_string (line 189) | static bool function sc_pid (line 204) | static sc_pid function connect_and_read_byte (line 466) | static bool function sc_socket (line 485) | static sc_socket function sc_server_init (line 518) | bool function device_read_info (line 572) | static bool function sc_server_connect_to (line 588) | static bool function sc_server_on_terminated (line 744) | static void function get_adb_tcp_port (line 759) | static uint16_t function wait_tcpip_mode_enabled (line 783) | static bool type sc_server (line 823) | struct sc_server type sc_intr (line 826) | struct sc_intr function sc_server_connect_to_tcpip (line 868) | static bool function sc_server_configure_tcpip_known_address (line 890) | static bool function sc_server_configure_tcpip_unknown_address (line 906) | static bool function sc_server_kill_adb_if_requested (line 931) | static void function run_server (line 940) | static int function sc_server_start (line 1155) | bool function sc_server_stop (line 1167) | void function sc_server_join (line 1176) | void function sc_server_destroy (line 1181) | void FILE: app/src/server.h type sc_server_info (line 17) | struct sc_server_info { type sc_server_params (line 21) | struct sc_server_params { type sc_server (line 76) | struct sc_server { type sc_server_callbacks (line 100) | struct sc_server_callbacks { type sc_server (line 122) | struct sc_server type sc_server_params (line 122) | struct sc_server_params type sc_server_callbacks (line 123) | struct sc_server_callbacks type sc_server (line 127) | struct sc_server type sc_server (line 131) | struct sc_server type sc_server (line 135) | struct sc_server type sc_server (line 139) | struct sc_server FILE: app/src/shortcut_mod.h function sc_shortcut_mods_to_sdl (line 17) | static inline uint16_t function sc_shortcut_mods_is_shortcut_mod (line 41) | static inline bool function sc_shortcut_mods_is_shortcut_key (line 50) | static inline bool FILE: app/src/sys/unix/file.c function sc_file_executable_exists (line 16) | bool function sc_file_is_regular (line 86) | bool FILE: app/src/sys/unix/process.c function sc_process_execute_p (line 15) | enum sc_process_result function sc_process_terminate (line 192) | bool function sc_exit_code (line 202) | sc_exit_code function sc_process_close (line 221) | void function sc_pipe_read (line 226) | ssize_t function sc_pipe_close (line 231) | void FILE: app/src/sys/win/file.c function sc_file_is_regular (line 25) | bool FILE: app/src/sys/win/process.c function build_cmd (line 12) | static bool function sc_process_execute_p (line 26) | enum sc_process_result function sc_process_terminate (line 220) | bool function sc_exit_code (line 225) | sc_exit_code function sc_process_close (line 239) | void function sc_pipe_read (line 246) | ssize_t function sc_pipe_close (line 255) | void FILE: app/src/trait/frame_sink.h type sc_frame_sink (line 14) | struct sc_frame_sink { type sc_frame_sink_ops (line 18) | struct sc_frame_sink_ops { FILE: app/src/trait/frame_source.c function sc_frame_source_init (line 5) | void function sc_frame_source_add_sink (line 10) | void function sc_frame_source_sinks_close_firsts (line 19) | static void function sc_frame_source_sinks_open (line 28) | bool function sc_frame_source_sinks_close (line 43) | void function sc_frame_source_sinks_push (line 49) | bool FILE: app/src/trait/frame_source.h type sc_frame_source (line 17) | struct sc_frame_source { type sc_frame_source (line 23) | struct sc_frame_source type sc_frame_source (line 26) | struct sc_frame_source type sc_frame_sink (line 27) | struct sc_frame_sink type sc_frame_source (line 30) | struct sc_frame_source type sc_frame_source (line 34) | struct sc_frame_source type sc_frame_source (line 37) | struct sc_frame_source FILE: app/src/trait/gamepad_processor.h type sc_gamepad_processor (line 13) | struct sc_gamepad_processor { type sc_gamepad_processor_ops (line 17) | struct sc_gamepad_processor_ops { FILE: app/src/trait/key_processor.h type sc_key_processor (line 15) | struct sc_key_processor { type sc_key_processor_ops (line 35) | struct sc_key_processor_ops { FILE: app/src/trait/mouse_processor.h type sc_mouse_processor (line 16) | struct sc_mouse_processor { type sc_mouse_processor_ops (line 27) | struct sc_mouse_processor_ops { FILE: app/src/trait/packet_sink.h type sc_packet_sink (line 14) | struct sc_packet_sink { type sc_packet_sink_ops (line 18) | struct sc_packet_sink_ops { FILE: app/src/trait/packet_source.c function sc_packet_source_init (line 5) | void function sc_packet_source_add_sink (line 10) | void function sc_packet_source_sinks_close_firsts (line 19) | static void function sc_packet_source_sinks_open (line 28) | bool function sc_packet_source_sinks_close (line 43) | void function sc_packet_source_sinks_push (line 49) | bool function sc_packet_source_sinks_disable (line 63) | void FILE: app/src/trait/packet_source.h type sc_packet_source (line 17) | struct sc_packet_source { type sc_packet_source (line 23) | struct sc_packet_source type sc_packet_source (line 26) | struct sc_packet_source type sc_packet_sink (line 27) | struct sc_packet_sink type sc_packet_source (line 30) | struct sc_packet_source type sc_packet_source (line 34) | struct sc_packet_source type sc_packet_source (line 37) | struct sc_packet_source type sc_packet_source (line 41) | struct sc_packet_source FILE: app/src/uhid/gamepad_uhid.c function sc_gamepad_uhid_send_input (line 20) | static void function sc_gamepad_uhid_send_open (line 37) | static void function sc_gamepad_uhid_send_close (line 54) | static void function sc_gamepad_processor_process_gamepad_added (line 66) | static void function sc_gamepad_processor_process_gamepad_removed (line 86) | static void function sc_gamepad_processor_process_gamepad_axis (line 102) | static void function sc_gamepad_processor_process_gamepad_button (line 116) | static void function sc_gamepad_uhid_init (line 131) | void FILE: app/src/uhid/gamepad_uhid.h type sc_gamepad_uhid (line 10) | struct sc_gamepad_uhid { type sc_gamepad_uhid (line 18) | struct sc_gamepad_uhid type sc_controller (line 19) | struct sc_controller FILE: app/src/uhid/keyboard_uhid.c function sc_keyboard_uhid_send_input (line 18) | static void function sc_keyboard_uhid_synchronize_mod (line 34) | static void function sc_key_processor_process_key (line 57) | static void function sc_keyboard_uhid_to_sc_mod (line 90) | static unsigned function sc_keyboard_uhid_process_hid_output (line 104) | void function sc_keyboard_uhid_init (line 122) | bool FILE: app/src/uhid/keyboard_uhid.h type sc_keyboard_uhid (line 12) | struct sc_keyboard_uhid { type sc_keyboard_uhid (line 21) | struct sc_keyboard_uhid type sc_controller (line 22) | struct sc_controller type sc_keyboard_uhid (line 25) | struct sc_keyboard_uhid FILE: app/src/uhid/mouse_uhid.c function sc_mouse_uhid_send_input (line 13) | static void function sc_mouse_processor_process_mouse_motion (line 30) | static void function sc_mouse_processor_process_mouse_click (line 41) | static void function sc_mouse_processor_process_mouse_scroll (line 52) | static void function sc_mouse_uhid_init (line 65) | bool FILE: app/src/uhid/mouse_uhid.h type sc_mouse_uhid (line 9) | struct sc_mouse_uhid { type sc_mouse_uhid (line 16) | struct sc_mouse_uhid type sc_controller (line 17) | struct sc_controller FILE: app/src/uhid/uhid_output.c function sc_uhid_devices_init (line 8) | void function sc_uhid_devices_process_hid_output (line 14) | void FILE: app/src/uhid/uhid_output.h type sc_uhid_devices (line 15) | struct sc_uhid_devices { type sc_uhid_devices (line 20) | struct sc_uhid_devices type sc_keyboard_uhid (line 21) | struct sc_keyboard_uhid type sc_uhid_devices (line 24) | struct sc_uhid_devices FILE: app/src/usb/aoa_hid.c type sc_vec_hid_ids (line 27) | struct sc_vec_hid_ids function sc_hid_input_log (line 29) | static void function sc_hid_open_log (line 41) | static void function sc_hid_close_log (line 54) | static void function sc_aoa_init (line 60) | bool function sc_aoa_destroy (line 88) | void function sc_aoa_register_hid (line 96) | static bool function sc_aoa_set_hid_report_desc (line 120) | static bool function sc_aoa_send_hid_event (line 157) | static bool function sc_aoa_unregister_hid (line 181) | static bool function sc_aoa_setup_hid (line 204) | static bool function sc_aoa_push_input_with_ack_to_wait (line 224) | bool function sc_aoa_push_open (line 258) | bool function sc_aoa_push_close (line 290) | bool function sc_aoa_process_event (line 320) | static bool function run_aoa_thread (line 404) | static int function sc_aoa_start (line 447) | bool function sc_aoa_stop (line 460) | void function sc_aoa_join (line 472) | void FILE: app/src/usb/aoa_hid.h type sc_aoa_event_type (line 15) | enum sc_aoa_event_type { type sc_aoa_event (line 21) | struct sc_aoa_event { type sc_aoa_event_queue (line 38) | struct sc_aoa_event_queue type sc_aoa_event (line 38) | struct sc_aoa_event type sc_aoa (line 40) | struct sc_aoa { type sc_aoa (line 52) | struct sc_aoa type sc_usb (line 52) | struct sc_usb type sc_acksync (line 52) | struct sc_acksync type sc_aoa (line 55) | struct sc_aoa type sc_aoa (line 58) | struct sc_aoa type sc_aoa (line 61) | struct sc_aoa type sc_aoa (line 64) | struct sc_aoa type sc_aoa (line 76) | struct sc_aoa type sc_hid_open (line 76) | struct sc_hid_open type sc_aoa (line 80) | struct sc_aoa type sc_hid_close (line 80) | struct sc_hid_close type sc_aoa (line 83) | struct sc_aoa type sc_hid_input (line 84) | struct sc_hid_input function sc_aoa_push_input (line 87) | static inline bool FILE: app/src/usb/gamepad_aoa.c function sc_gamepad_processor_process_gamepad_added (line 11) | static void function sc_gamepad_processor_process_gamepad_removed (line 28) | static void function sc_gamepad_processor_process_gamepad_axis (line 44) | static void function sc_gamepad_processor_process_gamepad_button (line 60) | static void function sc_gamepad_aoa_init (line 76) | void function sc_gamepad_aoa_destroy (line 92) | void FILE: app/src/usb/gamepad_aoa.h type sc_gamepad_aoa (line 10) | struct sc_gamepad_aoa { type sc_gamepad_aoa (line 18) | struct sc_gamepad_aoa type sc_aoa (line 18) | struct sc_aoa type sc_gamepad_aoa (line 21) | struct sc_gamepad_aoa FILE: app/src/usb/keyboard_aoa.c function push_mod_lock_state (line 11) | static bool function sc_key_processor_process_key (line 29) | static void function sc_keyboard_aoa_init (line 65) | bool function sc_keyboard_aoa_destroy (line 99) | void FILE: app/src/usb/keyboard_aoa.h type sc_keyboard_aoa (line 12) | struct sc_keyboard_aoa { type sc_keyboard_aoa (line 22) | struct sc_keyboard_aoa type sc_aoa (line 22) | struct sc_aoa type sc_keyboard_aoa (line 25) | struct sc_keyboard_aoa FILE: app/src/usb/mouse_aoa.c function sc_mouse_processor_process_mouse_motion (line 13) | static void function sc_mouse_processor_process_mouse_click (line 26) | static void function sc_mouse_processor_process_mouse_scroll (line 39) | static void function sc_mouse_aoa_init (line 54) | bool function sc_mouse_aoa_destroy (line 82) | void FILE: app/src/usb/mouse_aoa.h type sc_mouse_aoa (line 11) | struct sc_mouse_aoa { type sc_mouse_aoa (line 18) | struct sc_mouse_aoa type sc_aoa (line 18) | struct sc_aoa type sc_mouse_aoa (line 21) | struct sc_mouse_aoa FILE: app/src/usb/scrcpy_otg.c type scrcpy_otg (line 19) | struct scrcpy_otg { function sc_usb_on_disconnected (line 29) | static void function event_loop (line 37) | static enum scrcpy_exit_code function scrcpy_otg (line 59) | enum scrcpy_exit_code FILE: app/src/usb/scrcpy_otg.h type scrcpy_exit_code (line 9) | enum scrcpy_exit_code type scrcpy_options (line 10) | struct scrcpy_options FILE: app/src/usb/screen_otg.c function sc_screen_otg_render (line 11) | static void function sc_screen_otg_init (line 20) | bool function sc_screen_otg_destroy (line 94) | void function sc_screen_otg_process_key (line 103) | static void function sc_screen_otg_process_mouse_motion (line 121) | static void function sc_screen_otg_process_mouse_button (line 138) | static void function sc_screen_otg_process_mouse_wheel (line 157) | static void function sc_screen_otg_process_gamepad_device (line 183) | static void function sc_screen_otg_process_gamepad_axis (line 224) | static void function sc_screen_otg_process_gamepad_button (line 243) | static void function sc_screen_otg_handle_event (line 262) | void FILE: app/src/usb/screen_otg.h type sc_screen_otg (line 15) | struct sc_screen_otg { type sc_screen_otg_params (line 27) | struct sc_screen_otg_params { type sc_screen_otg (line 43) | struct sc_screen_otg type sc_screen_otg_params (line 44) | struct sc_screen_otg_params type sc_screen_otg (line 47) | struct sc_screen_otg type sc_screen_otg (line 50) | struct sc_screen_otg FILE: app/src/usb/usb.c type sc_vec_usb_devices (line 8) | struct sc_vec_usb_devices type sc_usb_device (line 8) | struct sc_usb_device function sc_usb_read_device (line 36) | static bool function sc_usb_device_destroy (line 77) | void function sc_usb_device_move (line 87) | void function sc_usb_devices_destroy (line 96) | static void function sc_usb_list_devices (line 104) | static bool function sc_usb_accept_device (line 132) | static bool function sc_usb_devices_select (line 141) | static size_t function sc_usb_devices_log (line 159) | static void function sc_usb_select_device (line 172) | bool function sc_usb_init (line 225) | bool function sc_usb_destroy (line 231) | void function sc_usb_report_disconnected (line 236) | static void function sc_usb_check_disconnected (line 244) | bool function LIBUSB_CALL (line 254) | static LIBUSB_CALL int function run_libusb_event_handler (line 278) | static int function sc_usb_register_callback (line 288) | static bool function sc_usb_connect (line 325) | bool function sc_usb_disconnect (line 361) | void function sc_usb_stop (line 366) | void function sc_usb_join (line 374) | void FILE: app/src/usb/usb.h type sc_usb (line 11) | struct sc_usb { type sc_usb_callbacks (line 28) | struct sc_usb_callbacks { type sc_usb_device (line 32) | struct sc_usb_device { type sc_usb_device (line 43) | struct sc_usb_device type sc_usb_device (line 55) | struct sc_usb_device type sc_usb_device (line 55) | struct sc_usb_device type sc_usb_device (line 58) | struct sc_usb_device type sc_usb (line 61) | struct sc_usb type sc_usb (line 64) | struct sc_usb type sc_usb (line 67) | struct sc_usb type sc_usb_device (line 68) | struct sc_usb_device type sc_usb (line 71) | struct sc_usb type sc_usb_callbacks (line 72) | struct sc_usb_callbacks type sc_usb (line 75) | struct sc_usb type sc_usb (line 80) | struct sc_usb type sc_usb (line 83) | struct sc_usb type sc_usb (line 86) | struct sc_usb FILE: app/src/util/acksync.c function sc_acksync_init (line 5) | bool function sc_acksync_destroy (line 24) | void function sc_acksync_ack (line 30) | void function sc_acksync_wait (line 43) | enum sc_acksync_wait_result function sc_acksync_interrupt (line 69) | void FILE: app/src/util/acksync.h type sc_acksync (line 21) | struct sc_acksync { type sc_acksync_wait_result (line 31) | enum sc_acksync_wait_result { type sc_acksync (line 43) | struct sc_acksync type sc_acksync (line 46) | struct sc_acksync type sc_acksync (line 55) | struct sc_acksync type sc_acksync_wait_result (line 60) | enum sc_acksync_wait_result type sc_acksync (line 61) | struct sc_acksync type sc_acksync (line 67) | struct sc_acksync FILE: app/src/util/audiobuf.c function sc_audiobuf_init (line 8) | bool function sc_audiobuf_destroy (line 30) | void function sc_audiobuf_read (line 35) | uint32_t function sc_audiobuf_write (line 79) | uint32_t function sc_audiobuf_write_silence (line 120) | uint32_t FILE: app/src/util/audiobuf.h type sc_audiobuf (line 17) | struct sc_audiobuf { function sc_audiobuf_to_samples (line 28) | static inline uint32_t function sc_audiobuf_to_bytes (line 34) | static inline size_t type sc_audiobuf (line 40) | struct sc_audiobuf type sc_audiobuf (line 44) | struct sc_audiobuf type sc_audiobuf (line 47) | struct sc_audiobuf type sc_audiobuf (line 50) | struct sc_audiobuf type sc_audiobuf (line 54) | struct sc_audiobuf function sc_audiobuf_capacity (line 56) | static inline uint32_t function sc_audiobuf_can_read (line 62) | static inline uint32_t FILE: app/src/util/average.c function sc_average_init (line 5) | void function sc_average_push (line 12) | void function sc_average_get (line 22) | float FILE: app/src/util/average.h type sc_average (line 6) | struct sc_average { type sc_average (line 20) | struct sc_average type sc_average (line 26) | struct sc_average type sc_average (line 35) | struct sc_average FILE: app/src/util/binary.h function sc_write16be (line 9) | static inline void function sc_write16le (line 15) | static inline void function sc_write32be (line 21) | static inline void function sc_write32le (line 29) | static inline void function sc_write64be (line 37) | static inline void function sc_write64le (line 43) | static inline void function sc_read16be (line 49) | static inline uint16_t function sc_read32be (line 54) | static inline uint32_t function sc_read64be (line 59) | static inline uint64_t function sc_float_to_u16fp (line 69) | static inline uint16_t function sc_float_to_i16fp (line 83) | static inline int16_t FILE: app/src/util/intmap.c type sc_intmap_entry (line 3) | struct sc_intmap_entry type sc_intmap_entry (line 4) | struct sc_intmap_entry type sc_intmap_entry (line 7) | struct sc_intmap_entry FILE: app/src/util/intmap.h type sc_intmap_entry (line 9) | struct sc_intmap_entry { type sc_intmap_entry (line 14) | struct sc_intmap_entry type sc_intmap_entry (line 15) | struct sc_intmap_entry FILE: app/src/util/intr.c function sc_intr_init (line 7) | bool function sc_intr_set_socket (line 23) | bool function sc_intr_set_process (line 38) | bool function sc_intr_interrupt (line 53) | void function sc_intr_destroy (line 77) | void FILE: app/src/util/intr.h type sc_intr (line 19) | struct sc_intr { type sc_intr (line 35) | struct sc_intr type sc_intr (line 43) | struct sc_intr type sc_intr (line 51) | struct sc_intr type sc_intr (line 59) | struct sc_intr function sc_intr_is_interrupted (line 67) | static inline bool type sc_intr (line 76) | struct sc_intr FILE: app/src/util/log.c function SDL_LogPriority (line 12) | static SDL_LogPriority function log_level_sdl_to_sc (line 31) | static enum sc_log_level function sc_set_log_level (line 50) | void function sc_get_log_level (line 57) | enum sc_log_level function sc_log (line 63) | void function sc_log_windows_error (line 74) | bool function SDL_LogPriority (line 94) | static SDL_LogPriority function sc_av_log_callback (line 111) | static void function sc_sdl_log_print (line 140) | static void SDLCALL function sc_log_configure (line 152) | void FILE: app/src/util/log.h type sc_log_level (line 23) | enum sc_log_level type sc_log_level (line 25) | enum sc_log_level type sc_log_level (line 29) | enum sc_log_level FILE: app/src/util/net.c type socklen_t (line 9) | typedef int socklen_t; type SOCKADDR_IN (line 19) | typedef struct sockaddr_in SOCKADDR_IN; type SOCKADDR (line 20) | typedef struct sockaddr SOCKADDR; type IN_ADDR (line 21) | typedef struct in_addr IN_ADDR; function net_init (line 26) | bool function net_cleanup (line 39) | void function sc_raw_socket_close (line 46) | static inline bool function sc_socket (line 55) | static inline sc_socket function sc_raw_socket (line 78) | static inline sc_raw_socket function set_cloexec_flag (line 94) | static bool function net_perror (line 111) | static void function sc_socket (line 120) | sc_socket function net_connect (line 139) | bool function net_listen (line 156) | bool function sc_socket (line 184) | sc_socket function net_recv (line 206) | ssize_t function net_recv_all (line 212) | ssize_t function net_send (line 218) | ssize_t function net_send_all (line 224) | ssize_t function net_interrupt (line 239) | bool function net_close (line 255) | bool function net_set_tcp_nodelay (line 271) | bool function net_parse_ipv4 (line 287) | bool FILE: app/src/util/net.h type SOCKET (line 13) | typedef SOCKET sc_raw_socket; type sc_raw_socket (line 16) | typedef int sc_raw_socket; type sc_socket_wrapper (line 34) | struct sc_socket_wrapper { type sc_raw_socket (line 40) | typedef sc_raw_socket sc_socket; FILE: app/src/util/net_intr.c function net_connect_intr (line 3) | bool function net_listen_intr (line 17) | bool function sc_socket (line 31) | sc_socket function net_recv_intr (line 44) | ssize_t function net_recv_all_intr (line 57) | ssize_t function net_send_intr (line 71) | ssize_t function net_send_all_intr (line 85) | ssize_t FILE: app/src/util/net_intr.h type sc_intr (line 15) | struct sc_intr type sc_intr (line 19) | struct sc_intr type sc_intr (line 23) | struct sc_intr type sc_intr (line 26) | struct sc_intr type sc_intr (line 29) | struct sc_intr type sc_intr (line 33) | struct sc_intr type sc_intr (line 37) | struct sc_intr FILE: app/src/util/process.c function sc_process_execute (line 5) | enum sc_process_result function sc_pipe_read_all (line 10) | ssize_t function run_observer (line 25) | static int function sc_process_observer_init (line 42) | bool function sc_process_observer_timedwait (line 76) | bool function sc_process_observer_join (line 91) | void function sc_process_observer_destroy (line 96) | void FILE: app/src/util/process.h type HANDLE (line 19) | typedef HANDLE sc_pid; type DWORD (line 20) | typedef DWORD sc_exit_code; type HANDLE (line 21) | typedef HANDLE sc_pipe; type pid_t (line 29) | typedef pid_t sc_pid; type sc_exit_code (line 30) | typedef int sc_exit_code; type sc_pipe (line 31) | typedef int sc_pipe; type sc_process_listener (line 35) | struct sc_process_listener { type sc_process_observer (line 51) | struct sc_process_observer { type sc_process_result (line 63) | enum sc_process_result { type sc_process_result (line 82) | enum sc_process_result type sc_process_result (line 93) | enum sc_process_result type sc_process_observer (line 148) | struct sc_process_observer type sc_process_listener (line 149) | struct sc_process_listener type sc_process_observer (line 162) | struct sc_process_observer type sc_process_observer (line 169) | struct sc_process_observer type sc_process_observer (line 177) | struct sc_process_observer FILE: app/src/util/process_intr.c function sc_pipe_read_intr (line 3) | ssize_t function sc_pipe_read_all_intr (line 20) | ssize_t FILE: app/src/util/process_intr.h type sc_intr (line 10) | struct sc_intr type sc_intr (line 14) | struct sc_intr FILE: app/src/util/rand.c function sc_rand_init (line 7) | void sc_rand_init(struct sc_rand *rand) { function sc_rand_u32 (line 14) | uint32_t sc_rand_u32(struct sc_rand *rand) { function sc_rand_u64 (line 20) | uint64_t sc_rand_u64(struct sc_rand *rand) { FILE: app/src/util/rand.h type sc_rand (line 8) | struct sc_rand { type sc_rand (line 12) | struct sc_rand type sc_rand (line 13) | struct sc_rand type sc_rand (line 14) | struct sc_rand FILE: app/src/util/str.c function sc_strncpy (line 18) | size_t function sc_str_join (line 28) | size_t function sc_str_parse_integer (line 87) | bool function sc_str_parse_integers (line 106) | size_t function sc_str_parse_integer_with_suffix (line 136) | bool function sc_str_list_contains (line 170) | bool function sc_str_utf8_truncation_index (line 188) | size_t function wchar_t (line 206) | wchar_t * type sc_strbuf (line 246) | struct sc_strbuf function sc_str_index_of_column (line 321) | ssize_t function sc_str_remove_trailing_cr (line 347) | size_t FILE: app/src/util/strbuf.c function sc_strbuf_init (line 9) | bool function sc_strbuf_reserve (line 22) | static bool function sc_strbuf_append (line 38) | bool function sc_strbuf_append_char (line 54) | bool function sc_strbuf_append_n (line 67) | bool function sc_strbuf_shrink (line 80) | void FILE: app/src/util/strbuf.h type sc_strbuf (line 10) | struct sc_strbuf { type sc_strbuf (line 22) | struct sc_strbuf type sc_strbuf (line 30) | struct sc_strbuf type sc_strbuf (line 38) | struct sc_strbuf type sc_strbuf (line 46) | struct sc_strbuf function sc_strbuf_append_str (line 51) | static inline bool type sc_strbuf (line 71) | struct sc_strbuf FILE: app/src/util/term.c function sc_term_get_size (line 12) | bool FILE: app/src/util/thread.c function sc_thread_create (line 13) | bool function SDL_ThreadPriority (line 30) | static SDL_ThreadPriority function sc_thread_set_priority (line 51) | bool function sc_thread_join (line 63) | void function sc_mutex_init (line 68) | bool function sc_mutex_destroy (line 83) | void function sc_mutex_lock (line 88) | void function sc_mutex_unlock (line 106) | void function sc_thread_id (line 123) | sc_thread_id function sc_mutex_held (line 129) | bool function sc_cond_init (line 137) | bool function sc_cond_destroy (line 149) | void function sc_cond_wait (line 154) | void function sc_cond_timedwait (line 170) | bool function sc_cond_signal (line 196) | void function sc_cond_broadcast (line 209) | void FILE: app/src/util/thread.h type SDL_Thread (line 12) | typedef struct SDL_Thread SDL_Thread; type SDL_mutex (line 13) | typedef struct SDL_mutex SDL_mutex; type SDL_cond (line 14) | typedef struct SDL_cond SDL_cond; type sc_thread_id (line 17) | typedef unsigned sc_thread_id; type atomic_uint (line 18) | typedef atomic_uint sc_atomic_thread_id; type sc_thread (line 20) | typedef struct sc_thread { type sc_thread_priority (line 24) | enum sc_thread_priority { type sc_mutex (line 31) | typedef struct sc_mutex { type sc_cond (line 38) | typedef struct sc_cond { type sc_thread_priority (line 52) | enum sc_thread_priority type sc_mutex (line 71) | struct sc_mutex FILE: app/src/util/tick.c function sc_tick (line 10) | sc_tick FILE: app/src/util/tick.h type sc_tick (line 8) | typedef int64_t sc_tick; FILE: app/src/util/timeout.c function sc_timeout_init (line 8) | bool function run_timeout (line 25) | static int function sc_timeout_start (line 43) | bool function sc_timeout_stop (line 62) | void function sc_timeout_join (line 70) | void function sc_timeout_destroy (line 75) | void FILE: app/src/util/timeout.h type sc_timeout (line 11) | struct sc_timeout { type sc_timeout_callbacks (line 23) | struct sc_timeout_callbacks { type sc_timeout (line 28) | struct sc_timeout type sc_timeout (line 31) | struct sc_timeout type sc_timeout (line 34) | struct sc_timeout type sc_timeout_callbacks (line 35) | struct sc_timeout_callbacks type sc_timeout (line 38) | struct sc_timeout type sc_timeout (line 41) | struct sc_timeout FILE: app/src/util/vecdeque.h function sc_vecdeque_growsize_ (line 228) | static inline size_t FILE: app/src/util/vector.h function sc_vector_min_ (line 82) | static inline size_t function sc_vector_max_ (line 88) | static inline size_t function sc_vector_clamp_ (line 94) | static inline size_t function sc_vector_growsize_ (line 155) | static inline size_t function sc_char_array_reverse (line 339) | static inline void function sc_char_array_rotate_left (line 358) | static inline void function sc_char_array_rotate_right (line 374) | static inline void function sc_char_array_move (line 385) | static inline void FILE: app/src/v4l2_sink.c function AVOutputFormat (line 17) | static const AVOutputFormat * function write_header (line 34) | static bool function rescale_packet (line 59) | static void function write_packet (line 65) | static bool function encode_and_write_frame (line 87) | static bool function run_v4l2_sink (line 114) | static int function sc_v4l2_sink_open (line 148) | static bool function sc_v4l2_sink_close (line 291) | static void function sc_v4l2_sink_push (line 310) | static bool function sc_v4l2_frame_sink_open (line 328) | static bool function sc_v4l2_frame_sink_close (line 334) | static void function sc_v4l2_frame_sink_push (line 340) | static bool function sc_v4l2_sink_init (line 346) | bool function sc_v4l2_sink_destroy (line 365) | void FILE: app/src/v4l2_sink.h type sc_v4l2_sink (line 14) | struct sc_v4l2_sink { type sc_v4l2_sink (line 35) | struct sc_v4l2_sink type sc_v4l2_sink (line 38) | struct sc_v4l2_sink FILE: app/src/version.c function scrcpy_print_version (line 15) | void FILE: app/tests/test_adb_parser.c function test_adb_devices (line 8) | static void test_adb_devices(void) { function test_adb_devices_cr (line 34) | static void test_adb_devices_cr(void) { function test_adb_devices_daemon_start (line 60) | static void test_adb_devices_daemon_start(void) { function test_adb_devices_daemon_start_mixed (line 81) | static void test_adb_devices_daemon_start_mixed(void) { function test_adb_devices_without_eol (line 108) | static void test_adb_devices_without_eol(void) { function test_adb_devices_without_header (line 127) | static void test_adb_devices_without_header(void) { function test_adb_devices_corrupted (line 137) | static void test_adb_devices_corrupted(void) { function test_adb_devices_spaces (line 148) | static void test_adb_devices_spaces(void) { function test_get_ip_single_line (line 166) | static void test_get_ip_single_line(void) { function test_get_ip_single_line_without_eol (line 176) | static void test_get_ip_single_line_without_eol(void) { function test_get_ip_single_line_with_trailing_space (line 186) | static void test_get_ip_single_line_with_trailing_space(void) { function test_get_ip_multiline_first_ok (line 196) | static void test_get_ip_multiline_first_ok(void) { function test_get_ip_multiline_second_ok (line 208) | static void test_get_ip_multiline_second_ok(void) { function test_get_ip_multiline_second_ok_without_cr (line 220) | static void test_get_ip_multiline_second_ok_without_cr(void) { function test_get_ip_no_wlan (line 232) | static void test_get_ip_no_wlan(void) { function test_get_ip_no_wlan_without_eol (line 240) | static void test_get_ip_no_wlan_without_eol(void) { function test_get_ip_truncated (line 248) | static void test_get_ip_truncated(void) { function main (line 256) | int main(int argc, char *argv[]) { FILE: app/tests/test_audiobuf.c function test_audiobuf_simple (line 8) | static void test_audiobuf_simple(void) { function test_audiobuf_boundaries (line 40) | static void test_audiobuf_boundaries(void) { function test_audiobuf_partial_read_write (line 85) | static void test_audiobuf_partial_read_write(void) { function main (line 127) | int main(int argc, char *argv[]) { FILE: app/tests/test_binary.c function test_write16be (line 7) | static void test_write16be(void) { function test_write32be (line 17) | static void test_write32be(void) { function test_write64be (line 29) | static void test_write64be(void) { function test_write16le (line 45) | static void test_write16le(void) { function test_write32le (line 55) | static void test_write32le(void) { function test_write64le (line 67) | static void test_write64le(void) { function test_read16be (line 83) | static void test_read16be(void) { function test_read32be (line 91) | static void test_read32be(void) { function test_read64be (line 99) | static void test_read64be(void) { function test_float_to_u16fp (line 108) | static void test_float_to_u16fp(void) { function test_float_to_i16fp (line 119) | static void test_float_to_i16fp(void) { function main (line 138) | int main(int argc, char *argv[]) { FILE: app/tests/test_cli.c function test_flag_version (line 9) | static void test_flag_version(void) { function test_flag_help (line 24) | static void test_flag_help(void) { function test_options (line 39) | static void test_options(void) { function test_options2 (line 99) | static void test_options2(void) { function test_parse_shortcut_mods (line 124) | static void test_parse_shortcut_mods(void) { function main (line 152) | int main(int argc, char *argv[]) { FILE: app/tests/test_control_msg_serialize.c function test_serialize_inject_keycode (line 9) | static void test_serialize_inject_keycode(void) { function test_serialize_inject_text (line 34) | static void test_serialize_inject_text(void) { function test_serialize_inject_text_long (line 54) | static void test_serialize_inject_text_long(void) { function test_serialize_inject_touch_event (line 77) | static void test_serialize_inject_touch_event(void) { function test_serialize_inject_scroll_event (line 116) | static void test_serialize_inject_scroll_event(void) { function test_serialize_back_or_screen_on (line 151) | static void test_serialize_back_or_screen_on(void) { function test_serialize_expand_notification_panel (line 170) | static void test_serialize_expand_notification_panel(void) { function test_serialize_expand_settings_panel (line 185) | static void test_serialize_expand_settings_panel(void) { function test_serialize_collapse_panels (line 200) | static void test_serialize_collapse_panels(void) { function test_serialize_get_clipboard (line 215) | static void test_serialize_get_clipboard(void) { function test_serialize_set_clipboard (line 234) | static void test_serialize_set_clipboard(void) { function test_serialize_set_clipboard_long (line 258) | static void test_serialize_set_clipboard_long(void) { function test_serialize_set_display_power (line 292) | static void test_serialize_set_display_power(void) { function test_serialize_rotate_device (line 311) | static void test_serialize_rotate_device(void) { function test_serialize_uhid_create (line 326) | static void test_serialize_uhid_create(void) { function test_serialize_uhid_input (line 357) | static void test_serialize_uhid_input(void) { function test_serialize_uhid_destroy (line 380) | static void test_serialize_uhid_destroy(void) { function test_serialize_open_hard_keyboard (line 399) | static void test_serialize_open_hard_keyboard(void) { function test_serialize_start_app (line 414) | static void test_serialize_start_app(void) { function test_serialize_reset_video (line 434) | static void test_serialize_reset_video(void) { function main (line 449) | int main(int argc, char *argv[]) { FILE: app/tests/test_device_msg_deserialize.c function test_deserialize_clipboard (line 10) | static void test_deserialize_clipboard(void) { function test_deserialize_clipboard_big (line 28) | static void test_deserialize_clipboard_big(void) { function test_deserialize_ack_set_clipboard (line 50) | static void test_deserialize_ack_set_clipboard(void) { function test_deserialize_uhid_output (line 64) | static void test_deserialize_uhid_output(void) { function main (line 86) | int main(int argc, char *argv[]) { FILE: app/tests/test_orientation.c function test_transforms (line 7) | static void test_transforms(void) { function main (line 85) | int main(int argc, char *argv[]) { FILE: app/tests/test_str.c function test_strncpy_simple (line 11) | static void test_strncpy_simple(void) { function test_strncpy_just_fit (line 28) | static void test_strncpy_just_fit(void) { function test_strncpy_truncated (line 42) | static void test_strncpy_truncated(void) { function test_join_simple (line 56) | static void test_join_simple(void) { function test_join_just_fit (line 74) | static void test_join_just_fit(void) { function test_join_truncated_in_token (line 89) | static void test_join_truncated_in_token(void) { function test_join_truncated_before_sep (line 104) | static void test_join_truncated_before_sep(void) { function test_join_truncated_after_sep (line 119) | static void test_join_truncated_after_sep(void) { function test_quote (line 134) | static void test_quote(void) { function test_concat (line 144) | static void test_concat(void) { function test_utf8_truncate (line 154) | static void test_utf8_truncate(void) { function test_parse_integer (line 185) | static void test_parse_integer(void) { function test_parse_integers (line 202) | static void test_parse_integers(void) { function test_parse_integer_with_suffix (line 251) | static void test_parse_integer_with_suffix(void) { function test_strlist_contains (line 305) | static void test_strlist_contains(void) { function test_wrap_lines (line 317) | static void test_wrap_lines(void) { function test_index_of_column (line 355) | static void test_index_of_column(void) { function test_remove_trailing_cr (line 375) | static void test_remove_trailing_cr(void) { function main (line 389) | int main(int argc, char *argv[]) { FILE: app/tests/test_strbuf.c function test_strbuf_simple (line 10) | static void test_strbuf_simple(void) { function main (line 42) | int main(int argc, char *argv[]) { FILE: app/tests/test_vecdeque.c function test_vecdeque_push_pop (line 15) | static void test_vecdeque_push_pop(void) { function test_vecdeque_reserve (line 50) | static void test_vecdeque_reserve(void) { function test_vecdeque_grow (line 105) | static void test_vecdeque_grow(void) { function test_vecdeque_push_hole (line 145) | static void test_vecdeque_push_hole(void) { function main (line 187) | int main(int argc, char *argv[]) { FILE: app/tests/test_vector.c function test_vector_insert_remove (line 7) | static void test_vector_insert_remove(void) { function test_vector_push_array (line 50) | static void test_vector_push_array(void) { function test_vector_insert_array (line 83) | static void test_vector_insert_array(void) { function test_vector_remove_slice (line 115) | static void test_vector_remove_slice(void) { function test_vector_swap_remove (line 136) | static void test_vector_swap_remove(void) { function test_vector_index_of (line 158) | static void test_vector_index_of(void) { function test_vector_grow (line 190) | static void test_vector_grow(void) { function test_vector_exp_growth (line 242) | static void test_vector_exp_growth(void) { function test_vector_reserve (line 280) | static void test_vector_reserve(void) { function test_vector_shrink_to_fit (line 302) | static void test_vector_shrink_to_fit(void) { function test_vector_move (line 325) | static void test_vector_move(void) { function test_vector_move_slice_forward (line 349) | static void test_vector_move_slice_forward(void) { function test_vector_move_slice_backward (line 376) | static void test_vector_move_slice_backward(void) { function main (line 403) | int main(int argc, char *argv[]) { FILE: server/src/main/java/android/content/IContentProvider.java type IContentProvider (line 3) | public interface IContentProvider { FILE: server/src/main/java/com/genymobile/scrcpy/AndroidVersions.java class AndroidVersions (line 10) | public final class AndroidVersions { method AndroidVersions (line 12) | private AndroidVersions() { FILE: server/src/main/java/com/genymobile/scrcpy/AsyncProcessor.java type AsyncProcessor (line 3) | public interface AsyncProcessor { type TerminationListener (line 4) | interface TerminationListener { method onTerminated (line 10) | void onTerminated(boolean fatalError); method start (line 13) | void start(TerminationListener listener); method stop (line 15) | void stop(); method join (line 17) | void join() throws InterruptedException; FILE: server/src/main/java/com/genymobile/scrcpy/CleanUp.java class CleanUp (line 23) | public final class CleanUp { method CleanUp (line 33) | private CleanUp(Options options) { method start (line 38) | public static CleanUp start(Options options) { method interrupt (line 42) | public synchronized void interrupt() { method join (line 48) | public void join() throws InterruptedException { method runCleanUp (line 52) | private void runCleanUp(Options options) { method run (line 125) | private void run(int displayId, int restoreStayOn, boolean disableShow... method setRestoreDisplayPower (line 169) | public synchronized void setRestoreDisplayPower(boolean restoreDisplay... method unlinkSelf (line 175) | public static void unlinkSelf() { method prepareMainLooper (line 183) | @SuppressWarnings("deprecation") method main (line 188) | public static void main(String... args) { FILE: server/src/main/java/com/genymobile/scrcpy/FakeContext.java class FakeContext (line 17) | public final class FakeContext extends ContextWrapper { method get (line 24) | public static FakeContext get() { method acquireProvider (line 29) | @SuppressWarnings({"unused", "ProtectedMemberInFinalClass"}) method releaseProvider (line 35) | @SuppressWarnings("unused") method acquireUnstableProvider (line 41) | @SuppressWarnings({"unused", "ProtectedMemberInFinalClass"}) method releaseUnstableProvider (line 47) | @SuppressWarnings("unused") method unstableProviderDied (line 53) | @SuppressWarnings("unused") method FakeContext (line 60) | private FakeContext() { method getPackageName (line 64) | @Override method getOpPackageName (line 69) | @Override method getAttributionSource (line 74) | @TargetApi(AndroidVersions.API_31_ANDROID_12) method getDeviceId (line 83) | @SuppressWarnings("unused") method getApplicationContext (line 88) | @Override method createPackageContext (line 93) | @Override method getContentResolver (line 98) | @Override method getSystemService (line 103) | @SuppressLint("SoonBlockedPrivateApi") FILE: server/src/main/java/com/genymobile/scrcpy/Options.java class Options (line 23) | public class Options { method getLogLevel (line 83) | public Ln.Level getLogLevel() { method getScid (line 87) | public int getScid() { method getVideo (line 91) | public boolean getVideo() { method getAudio (line 95) | public boolean getAudio() { method getMaxSize (line 99) | public int getMaxSize() { method getVideoCodec (line 103) | public VideoCodec getVideoCodec() { method getAudioCodec (line 107) | public AudioCodec getAudioCodec() { method getVideoSource (line 111) | public VideoSource getVideoSource() { method getAudioSource (line 115) | public AudioSource getAudioSource() { method getAudioDup (line 119) | public boolean getAudioDup() { method getVideoBitRate (line 123) | public int getVideoBitRate() { method getAudioBitRate (line 127) | public int getAudioBitRate() { method getMaxFps (line 131) | public float getMaxFps() { method getAngle (line 135) | public float getAngle() { method isTunnelForward (line 139) | public boolean isTunnelForward() { method getCrop (line 143) | public Rect getCrop() { method getControl (line 147) | public boolean getControl() { method getDisplayId (line 151) | public int getDisplayId() { method getCameraId (line 155) | public String getCameraId() { method getCameraSize (line 159) | public Size getCameraSize() { method getCameraFacing (line 163) | public CameraFacing getCameraFacing() { method getCameraAspectRatio (line 167) | public CameraAspectRatio getCameraAspectRatio() { method getCameraFps (line 171) | public int getCameraFps() { method getCameraHighSpeed (line 175) | public boolean getCameraHighSpeed() { method getShowTouches (line 179) | public boolean getShowTouches() { method getStayAwake (line 183) | public boolean getStayAwake() { method getScreenOffTimeout (line 187) | public int getScreenOffTimeout() { method getDisplayImePolicy (line 191) | public int getDisplayImePolicy() { method getVideoCodecOptions (line 195) | public List getVideoCodecOptions() { method getAudioCodecOptions (line 199) | public List getAudioCodecOptions() { method getVideoEncoder (line 203) | public String getVideoEncoder() { method getAudioEncoder (line 207) | public String getAudioEncoder() { method getPowerOffScreenOnClose (line 211) | public boolean getPowerOffScreenOnClose() { method getClipboardAutosync (line 215) | public boolean getClipboardAutosync() { method getDownsizeOnError (line 219) | public boolean getDownsizeOnError() { method getCleanup (line 223) | public boolean getCleanup() { method getPowerOn (line 227) | public boolean getPowerOn() { method getNewDisplay (line 231) | public NewDisplay getNewDisplay() { method getCaptureOrientation (line 235) | public Orientation getCaptureOrientation() { method getCaptureOrientationLock (line 239) | public Orientation.Lock getCaptureOrientationLock() { method getVDDestroyContent (line 243) | public boolean getVDDestroyContent() { method getVDSystemDecorations (line 247) | public boolean getVDSystemDecorations() { method getList (line 251) | public boolean getList() { method getListEncoders (line 255) | public boolean getListEncoders() { method getListDisplays (line 259) | public boolean getListDisplays() { method getListCameras (line 263) | public boolean getListCameras() { method getListCameraSizes (line 267) | public boolean getListCameraSizes() { method getListApps (line 271) | public boolean getListApps() { method getSendDeviceMeta (line 275) | public boolean getSendDeviceMeta() { method getSendFrameMeta (line 279) | public boolean getSendFrameMeta() { method getSendDummyByte (line 283) | public boolean getSendDummyByte() { method getSendCodecMeta (line 287) | public boolean getSendCodecMeta() { method parse (line 291) | @SuppressWarnings("MethodLength") method parseCrop (line 529) | private static Rect parseCrop(String crop) { method parseSize (line 548) | private static Size parseSize(String size) { method parseCameraAspectRatio (line 562) | private static CameraAspectRatio parseCameraAspectRatio(String ar) { method parseFloat (line 578) | private static float parseFloat(String key, String value) { method parseNewDisplay (line 586) | private static NewDisplay parseNewDisplay(String newDisplay) { method parseCaptureOrientation (line 618) | private static Pair parseCaptureOrienta... method parseDisplayImePolicy (line 639) | private static int parseDisplayImePolicy(String value) { FILE: server/src/main/java/com/genymobile/scrcpy/Server.java class Server (line 37) | public final class Server { class Completion (line 47) | private static class Completion { method Completion (line 51) | Completion(int running) { method addCompleted (line 55) | synchronized void addCompleted(boolean fatalError) { method Server (line 66) | private Server() { method scrcpy (line 70) | private static void scrcpy(Options options) throws IOException, Config... method prepareMainLooper (line 197) | private static void prepareMainLooper() { method main (line 212) | public static void main(String... args) { method internalMain (line 227) | private static void internalMain(String... args) throws Exception { FILE: server/src/main/java/com/genymobile/scrcpy/Workarounds.java class Workarounds (line 25) | @SuppressLint("PrivateApi,BlockedPrivateApi,SoonBlockedPrivateApi,Discou... method Workarounds (line 53) | private Workarounds() { method apply (line 57) | public static void apply() { method fillAppInfo (line 78) | private static void fillAppInfo() { method fillAppContext (line 104) | private static void fillAppContext() { method fillConfigurationController (line 118) | private static void fillConfigurationController() { method getSystemContext (line 137) | static Context getSystemContext() { method createAudioRecord (line 148) | @TargetApi(AndroidVersions.API_30_ANDROID_11) FILE: server/src/main/java/com/genymobile/scrcpy/audio/AudioCapture.java type AudioCapture (line 7) | public interface AudioCapture { method checkCompatibility (line 8) | void checkCompatibility() throws AudioCaptureException; method start (line 9) | void start() throws AudioCaptureException; method stop (line 10) | void stop(); method read (line 19) | int read(ByteBuffer outDirectBuffer, MediaCodec.BufferInfo outBufferIn... FILE: server/src/main/java/com/genymobile/scrcpy/audio/AudioCaptureException.java class AudioCaptureException (line 11) | public class AudioCaptureException extends Exception { FILE: server/src/main/java/com/genymobile/scrcpy/audio/AudioCodec.java type AudioCodec (line 7) | public enum AudioCodec implements Codec { method AudioCodec (line 17) | AudioCodec(int id, String name, String mimeType) { method getType (line 23) | @Override method getId (line 28) | @Override method getName (line 33) | @Override method getMimeType (line 38) | @Override method findByName (line 43) | public static AudioCodec findByName(String name) { FILE: server/src/main/java/com/genymobile/scrcpy/audio/AudioConfig.java class AudioConfig (line 5) | public final class AudioConfig { method AudioConfig (line 18) | private AudioConfig() { method createAudioFormat (line 22) | public static AudioFormat createAudioFormat() { FILE: server/src/main/java/com/genymobile/scrcpy/audio/AudioDirectCapture.java class AudioDirectCapture (line 20) | public class AudioDirectCapture implements AudioCapture { method AudioDirectCapture (line 33) | public AudioDirectCapture(AudioSource audioSource) { method createAudioRecord (line 37) | @TargetApi(AndroidVersions.API_23_ANDROID_6_0) method startWorkaroundAndroid11 (line 56) | private static void startWorkaroundAndroid11() { method stopWorkaroundAndroid11 (line 70) | private static void stopWorkaroundAndroid11() { method tryStartRecording (line 74) | private void tryStartRecording(int attempts, int delayMs) throws Audio... method startRecording (line 94) | private void startRecording() throws AudioCaptureException { method checkCompatibility (line 107) | @Override method start (line 115) | @Override method stop (line 129) | @Override method read (line 137) | @Override FILE: server/src/main/java/com/genymobile/scrcpy/audio/AudioEncoder.java class AudioEncoder (line 29) | public final class AudioEncoder implements AsyncProcessor { class InputTask (line 31) | private static class InputTask { method InputTask (line 34) | InputTask(int index) { class OutputTask (line 39) | private static class OutputTask { method OutputTask (line 43) | OutputTask(int index, MediaCodec.BufferInfo bufferInfo) { method AudioEncoder (line 74) | public AudioEncoder(AudioCapture capture, Streamer streamer, Options o... method createFormat (line 82) | private static MediaFormat createFormat(String mimeType, int bitRate, ... method inputThread (line 101) | @TargetApi(AndroidVersions.API_24_ANDROID_7_0) method outputThread (line 117) | private void outputThread(MediaCodec mediaCodec) throws IOException, I... method fixTimestamp (line 134) | private void fixTimestamp(MediaCodec.BufferInfo bufferInfo) { method start (line 153) | @Override method stop (line 175) | @Override method join (line 183) | @Override method end (line 190) | private synchronized void end() { method waitEnded (line 195) | private synchronized void waitEnded() { method encode (line 205) | @TargetApi(AndroidVersions.API_23_ANDROID_6_0) method createMediaCodec (line 319) | private static MediaCodec createMediaCodec(Codec codec, String encoder... class EncoderCallback (line 349) | private final class EncoderCallback extends MediaCodec.Callback { method onInputBufferAvailable (line 350) | @TargetApi(AndroidVersions.API_24_ANDROID_7_0) method onOutputBufferAvailable (line 360) | @Override method onError (line 369) | @Override method onOutputFormatChanged (line 375) | @Override FILE: server/src/main/java/com/genymobile/scrcpy/audio/AudioPlaybackCapture.java class AudioPlaybackCapture (line 20) | public final class AudioPlaybackCapture implements AudioCapture { method AudioPlaybackCapture (line 27) | public AudioPlaybackCapture(boolean keepPlayingOnDevice) { method createAudioRecord (line 31) | @SuppressLint("PrivateApi") method checkCompatibility (line 110) | @Override method start (line 118) | @Override method stop (line 125) | @Override method read (line 133) | @Override FILE: server/src/main/java/com/genymobile/scrcpy/audio/AudioRawRecorder.java class AudioRawRecorder (line 15) | public final class AudioRawRecorder implements AsyncProcessor { method AudioRawRecorder (line 22) | public AudioRawRecorder(AudioCapture capture, Streamer streamer) { method record (line 27) | private void record() throws IOException, AudioCaptureException { method start (line 67) | @Override method stop (line 86) | @Override method join (line 93) | @Override FILE: server/src/main/java/com/genymobile/scrcpy/audio/AudioRecordReader.java class AudioRecordReader (line 13) | public class AudioRecordReader { method AudioRecordReader (line 25) | public AudioRecordReader(AudioRecord recorder) { method read (line 29) | @TargetApi(AndroidVersions.API_24_ANDROID_7_0) FILE: server/src/main/java/com/genymobile/scrcpy/audio/AudioSource.java type AudioSource (line 6) | @SuppressLint("InlinedApi") method AudioSource (line 23) | AudioSource(String name, int directAudioSource) { method isDirect (line 28) | public boolean isDirect() { method getDirectAudioSource (line 32) | public int getDirectAudioSource() { method findByName (line 36) | public static AudioSource findByName(String name) { FILE: server/src/main/java/com/genymobile/scrcpy/control/ControlChannel.java class ControlChannel (line 7) | public final class ControlChannel { method ControlChannel (line 12) | public ControlChannel(LocalSocket controlSocket) throws IOException { method recv (line 17) | public ControlMessage recv() throws IOException { method send (line 21) | public void send(DeviceMessage msg) throws IOException { FILE: server/src/main/java/com/genymobile/scrcpy/control/ControlMessage.java class ControlMessage (line 8) | public final class ControlMessage { method ControlMessage (line 57) | private ControlMessage() { method createInjectKeycode (line 60) | public static ControlMessage createInjectKeycode(int action, int keyco... method createInjectText (line 70) | public static ControlMessage createInjectText(String text) { method createInjectTouchEvent (line 77) | public static ControlMessage createInjectTouchEvent(int action, long p... method createInjectScrollEvent (line 90) | public static ControlMessage createInjectScrollEvent(Position position... method createBackOrScreenOn (line 100) | public static ControlMessage createBackOrScreenOn(int action) { method createGetClipboard (line 107) | public static ControlMessage createGetClipboard(int copyKey) { method createSetClipboard (line 114) | public static ControlMessage createSetClipboard(long sequence, String ... method createSetDisplayPower (line 123) | public static ControlMessage createSetDisplayPower(boolean on) { method createEmpty (line 130) | public static ControlMessage createEmpty(int type) { method createUhidCreate (line 136) | public static ControlMessage createUhidCreate(int id, int vendorId, in... method createUhidInput (line 147) | public static ControlMessage createUhidInput(int id, byte[] data) { method createUhidDestroy (line 155) | public static ControlMessage createUhidDestroy(int id) { method createStartApp (line 162) | public static ControlMessage createStartApp(String name) { method getType (line 169) | public int getType() { method getText (line 173) | public String getText() { method getMetaState (line 177) | public int getMetaState() { method getAction (line 181) | public int getAction() { method getKeycode (line 185) | public int getKeycode() { method getActionButton (line 189) | public int getActionButton() { method getButtons (line 193) | public int getButtons() { method getPointerId (line 197) | public long getPointerId() { method getPressure (line 201) | public float getPressure() { method getPosition (line 205) | public Position getPosition() { method getHScroll (line 209) | public float getHScroll() { method getVScroll (line 213) | public float getVScroll() { method getCopyKey (line 217) | public int getCopyKey() { method getPaste (line 221) | public boolean getPaste() { method getRepeat (line 225) | public int getRepeat() { method getSequence (line 229) | public long getSequence() { method getId (line 233) | public int getId() { method getData (line 237) | public byte[] getData() { method getOn (line 241) | public boolean getOn() { method getVendorId (line 245) | public int getVendorId() { method getProductId (line 249) | public int getProductId() { FILE: server/src/main/java/com/genymobile/scrcpy/control/ControlMessageReader.java class ControlMessageReader (line 12) | public class ControlMessageReader { method ControlMessageReader (line 21) | public ControlMessageReader(InputStream rawInputStream) { method read (line 25) | public ControlMessage read() throws IOException { method parseInjectKeycode (line 64) | private ControlMessage parseInjectKeycode() throws IOException { method parseBufferLength (line 72) | private int parseBufferLength(int sizeBytes) throws IOException { method parseString (line 81) | private String parseString(int sizeBytes) throws IOException { method parseString (line 87) | private String parseString() throws IOException { method parseByteArray (line 91) | private byte[] parseByteArray(int sizeBytes) throws IOException { method parseInjectText (line 98) | private ControlMessage parseInjectText() throws IOException { method parseInjectTouchEvent (line 103) | private ControlMessage parseInjectTouchEvent() throws IOException { method parseInjectScrollEvent (line 113) | private ControlMessage parseInjectScrollEvent() throws IOException { method parseBackOrScreenOnEvent (line 122) | private ControlMessage parseBackOrScreenOnEvent() throws IOException { method parseGetClipboard (line 127) | private ControlMessage parseGetClipboard() throws IOException { method parseSetClipboard (line 132) | private ControlMessage parseSetClipboard() throws IOException { method parseSetDisplayPower (line 139) | private ControlMessage parseSetDisplayPower() throws IOException { method parseUhidCreate (line 144) | private ControlMessage parseUhidCreate() throws IOException { method parseUhidInput (line 153) | private ControlMessage parseUhidInput() throws IOException { method parseUhidDestroy (line 159) | private ControlMessage parseUhidDestroy() throws IOException { method parseStartApp (line 164) | private ControlMessage parseStartApp() throws IOException { method parsePosition (line 169) | private Position parsePosition() throws IOException { FILE: server/src/main/java/com/genymobile/scrcpy/control/ControlProtocolException.java class ControlProtocolException (line 5) | public class ControlProtocolException extends IOException { method ControlProtocolException (line 6) | public ControlProtocolException(String message) { FILE: server/src/main/java/com/genymobile/scrcpy/control/Controller.java class Controller (line 39) | public class Controller implements AsyncProcessor, VirtualDisplayListener { class DisplayData (line 56) | private static final class DisplayData { method DisplayData (line 60) | private DisplayData(int virtualDisplayId, PositionMapper positionMap... method Controller (line 103) | public Controller(ControlChannel controlChannel, CleanUp cleanUp, Opti... method onNewVirtualDisplay (line 139) | @Override method setSurfaceCapture (line 151) | public void setSurfaceCapture(SurfaceCapture surfaceCapture) { method getUhidManager (line 155) | private UhidManager getUhidManager() { method initPointers (line 188) | private void initPointers() { method control (line 202) | private void control() throws IOException { method start (line 223) | @Override method stop (line 242) | @Override method join (line 250) | @Override method handleEvent (line 258) | private boolean handleEvent() throws IOException { method injectKeycode (line 341) | private boolean injectKeycode(int action, int keycode, int repeat, int... method injectChar (line 349) | private boolean injectChar(char c) { method injectText (line 366) | private int injectText(String text) { method getEventPointAndDisplayId (line 378) | private Pair getEventPointAndDisplayId(Position positi... method injectTouch (line 408) | private boolean injectTouch(int action, long pointerId, Position posit... method injectScroll (line 519) | private boolean injectScroll(Position position, float hScroll, float v... method scheduleDisplayPowerOff (line 547) | private static void scheduleDisplayPowerOff(int displayId) { method pressBackOrTurnScreenOn (line 554) | private boolean pressBackOrTurnScreenOn(int action) { method getClipboard (line 573) | private void getClipboard(int copyKey) { method setClipboard (line 593) | private boolean setClipboard(String text, boolean paste, long sequence) { method openHardKeyboardSettings (line 615) | private void openHardKeyboardSettings() { method injectKeyEvent (line 620) | private boolean injectKeyEvent(int action, int keyCode, int repeat, in... method pressReleaseKeycode (line 624) | private boolean pressReleaseKeycode(int keyCode, int injectMode) { method getActionDisplayId (line 628) | private int getActionDisplayId() { method startAppAsync (line 644) | private void startAppAsync(String name) { method startApp (line 653) | private void startApp(String name) { method getStartAppDisplayId (line 696) | private int getStartAppDisplayId() { method waitDisplayData (line 716) | private DisplayData waitDisplayData(long timeoutMillis) throws Interru... method setDisplayPower (line 736) | private void setDisplayPower(boolean on) { method resetVideo (line 751) | private void resetVideo() { FILE: server/src/main/java/com/genymobile/scrcpy/control/DeviceMessage.java class DeviceMessage (line 3) | public final class DeviceMessage { method DeviceMessage (line 15) | private DeviceMessage() { method createClipboard (line 18) | public static DeviceMessage createClipboard(String text) { method createAckClipboard (line 25) | public static DeviceMessage createAckClipboard(long sequence) { method createUhidOutput (line 32) | public static DeviceMessage createUhidOutput(int id, byte[] data) { method getType (line 40) | public int getType() { method getText (line 44) | public String getText() { method getSequence (line 48) | public long getSequence() { method getId (line 52) | public int getId() { method getData (line 56) | public byte[] getData() { FILE: server/src/main/java/com/genymobile/scrcpy/control/DeviceMessageSender.java class DeviceMessageSender (line 9) | public final class DeviceMessageSender { method DeviceMessageSender (line 16) | public DeviceMessageSender(ControlChannel controlChannel) { method send (line 20) | public void send(DeviceMessage msg) { method loop (line 26) | private void loop() throws IOException, InterruptedException { method start (line 33) | public void start() { method stop (line 46) | public void stop() { method join (line 52) | public void join() throws InterruptedException { FILE: server/src/main/java/com/genymobile/scrcpy/control/DeviceMessageWriter.java class DeviceMessageWriter (line 11) | public class DeviceMessageWriter { method DeviceMessageWriter (line 18) | public DeviceMessageWriter(OutputStream rawOutputStream) { method write (line 22) | public void write(DeviceMessage msg) throws IOException { FILE: server/src/main/java/com/genymobile/scrcpy/control/KeyComposition.java class KeyComposition (line 16) | public final class KeyComposition { method KeyComposition (line 26) | private KeyComposition() { method decompose (line 30) | public static String decompose(char c) { method grave (line 34) | private static String grave(char c) { method acute (line 38) | private static String acute(char c) { method circumflex (line 42) | private static String circumflex(char c) { method tilde (line 46) | private static String tilde(char c) { method umlaut (line 50) | private static String umlaut(char c) { method createDecompositionMap (line 54) | private static Map createDecompositionMap() { FILE: server/src/main/java/com/genymobile/scrcpy/control/Pointer.java class Pointer (line 5) | public class Pointer { method Pointer (line 21) | public Pointer(long id, int localId) { method getId (line 26) | public long getId() { method getLocalId (line 30) | public int getLocalId() { method getPoint (line 34) | public Point getPoint() { method setPoint (line 38) | public void setPoint(Point point) { method getPressure (line 42) | public float getPressure() { method setPressure (line 46) | public void setPressure(float pressure) { method isUp (line 50) | public boolean isUp() { method setUp (line 54) | public void setUp(boolean up) { FILE: server/src/main/java/com/genymobile/scrcpy/control/PointersState.java class PointersState (line 10) | public class PointersState { method indexOf (line 16) | private int indexOf(long id) { method isLocalIdAvailable (line 26) | private boolean isLocalIdAvailable(int localId) { method nextUnusedLocalId (line 36) | private int nextUnusedLocalId() { method get (line 45) | public Pointer get(int index) { method getPointerIndex (line 49) | public int getPointerIndex(long id) { method update (line 77) | public int update(MotionEvent.PointerProperties[] props, MotionEvent.P... method cleanUp (line 97) | private void cleanUp() { FILE: server/src/main/java/com/genymobile/scrcpy/control/PositionMapper.java class PositionMapper (line 8) | public final class PositionMapper { method PositionMapper (line 13) | public PositionMapper(Size videoSize, AffineMatrix videoToDeviceMatrix) { method create (line 18) | public static PositionMapper create(Size videoSize, AffineMatrix filte... method getVideoSize (line 30) | public Size getVideoSize() { method map (line 34) | public Point map(Position position) { FILE: server/src/main/java/com/genymobile/scrcpy/control/UhidManager.java class UhidManager (line 23) | public final class UhidManager { method UhidManager (line 46) | public UhidManager(DeviceMessageSender sender, String displayUniqueId) { method open (line 58) | public void open(int id, int vendorId, int productId, String name, byt... method registerUhidListener (line 88) | private void registerUhidListener(int id, FileDescriptor fd) { method unregisterUhidListener (line 114) | private void unregisterUhidListener(FileDescriptor fd) { method extractHidOutputData (line 120) | private static byte[] extractHidOutputData(ByteBuffer buffer) { method writeInput (line 150) | public void writeInput(int id, byte[] data) throws IOException { method buildUhidCreate2Req (line 165) | private static byte[] buildUhidCreate2Req(int vendorId, int productId,... method buildUhidInput2Req (line 214) | private static byte[] buildUhidInput2Req(byte[] data) { method close (line 235) | public void close(int id) { method closeAll (line 252) | public void closeAll() { method close (line 264) | private static void close(FileDescriptor fd) { method mustUseInputPort (line 272) | private boolean mustUseInputPort() { method addUniqueIdAssociation (line 276) | private void addUniqueIdAssociation() { method removeUniqueIdAssociation (line 282) | private void removeUniqueIdAssociation() { FILE: server/src/main/java/com/genymobile/scrcpy/device/ConfigurationException.java class ConfigurationException (line 3) | public class ConfigurationException extends Exception { method ConfigurationException (line 4) | public ConfigurationException(String message) { FILE: server/src/main/java/com/genymobile/scrcpy/device/DesktopConnection.java class DesktopConnection (line 16) | public final class DesktopConnection implements Closeable { method DesktopConnection (line 31) | private DesktopConnection(LocalSocket videoSocket, LocalSocket audioSo... method connect (line 41) | private static LocalSocket connect(String abstractName) throws IOExcep... method getSocketName (line 47) | private static String getSocketName(int scid) { method open (line 56) | public static DesktopConnection open(int scid, boolean tunnelForward, ... method getFirstSocket (line 118) | private LocalSocket getFirstSocket() { method shutdown (line 128) | public void shutdown() throws IOException { method close (line 143) | public void close() throws IOException { method sendDeviceMeta (line 155) | public void sendDeviceMeta(String deviceName) throws IOException { method getVideoFd (line 167) | public FileDescriptor getVideoFd() { method getAudioFd (line 171) | public FileDescriptor getAudioFd() { method getControlChannel (line 175) | public ControlChannel getControlChannel() { FILE: server/src/main/java/com/genymobile/scrcpy/device/Device.java class Device (line 32) | public final class Device { method Device (line 47) | private Device() { method getDeviceName (line 51) | public static String getDeviceName() { method supportsInputEvents (line 55) | public static boolean supportsInputEvents(int displayId) { method injectEvent (line 60) | public static boolean injectEvent(InputEvent inputEvent, int displayId... method injectKeyEvent (line 72) | public static boolean injectKeyEvent(int action, int keyCode, int repe... method pressReleaseKeycode (line 79) | public static boolean pressReleaseKeycode(int keyCode, int displayId, ... method isScreenOn (line 84) | public static boolean isScreenOn(int displayId) { method expandNotificationPanel (line 89) | public static void expandNotificationPanel() { method expandSettingsPanel (line 93) | public static void expandSettingsPanel() { method collapsePanels (line 97) | public static void collapsePanels() { method getClipboardText (line 101) | public static String getClipboardText() { method setClipboardText (line 113) | public static boolean setClipboardText(String text) { method setDisplayPower (line 131) | public static boolean setDisplayPower(int displayId, boolean on) { method powerOffScreen (line 181) | public static boolean powerOffScreen(int displayId) { method rotateDevice (line 193) | public static void rotateDevice(int displayId) { method getCurrentRotation (line 213) | private static int getCurrentRotation(int displayId) { method listApps (line 224) | public static List listApps() { method getLaunchableApps (line 234) | @SuppressLint("QueryPermissionsNeeded") method getLaunchIntent (line 246) | public static Intent getLaunchIntent(PackageManager pm, String package... method toApp (line 255) | private static DeviceApp toApp(PackageManager pm, ApplicationInfo appI... method findByPackageName (line 261) | @SuppressLint("QueryPermissionsNeeded") method findByName (line 274) | @SuppressLint("QueryPermissionsNeeded") method startApp (line 291) | public static void startApp(String packageName, int displayId, boolean... FILE: server/src/main/java/com/genymobile/scrcpy/device/DeviceApp.java class DeviceApp (line 3) | public final class DeviceApp { method DeviceApp (line 9) | public DeviceApp(String packageName, String name, boolean system) { method getPackageName (line 15) | public String getPackageName() { method getName (line 19) | public String getName() { method isSystem (line 23) | public boolean isSystem() { FILE: server/src/main/java/com/genymobile/scrcpy/device/DisplayInfo.java class DisplayInfo (line 3) | public final class DisplayInfo { method DisplayInfo (line 14) | public DisplayInfo(int displayId, Size size, int rotation, int layerSt... method getDisplayId (line 24) | public int getDisplayId() { method getSize (line 28) | public Size getSize() { method getRotation (line 32) | public int getRotation() { method getLayerStack (line 36) | public int getLayerStack() { method getFlags (line 40) | public int getFlags() { method getDpi (line 44) | public int getDpi() { method getUniqueId (line 48) | public String getUniqueId() { FILE: server/src/main/java/com/genymobile/scrcpy/device/NewDisplay.java class NewDisplay (line 3) | public final class NewDisplay { method NewDisplay (line 7) | public NewDisplay() { method NewDisplay (line 11) | public NewDisplay(Size size, int dpi) { method getSize (line 16) | public Size getSize() { method getDpi (line 20) | public int getDpi() { method hasExplicitSize (line 24) | public boolean hasExplicitSize() { method hasExplicitDpi (line 28) | public boolean hasExplicitDpi() { FILE: server/src/main/java/com/genymobile/scrcpy/device/Orientation.java type Orientation (line 3) | public enum Orientation { type Lock (line 15) | public enum Lock { method Orientation (line 21) | Orientation(String name) { method getByName (line 25) | public static Orientation getByName(String name) { method fromRotation (line 35) | public static Orientation fromRotation(int ccwRotation) { method isFlipped (line 42) | public boolean isFlipped() { method getRotation (line 46) | public int getRotation() { FILE: server/src/main/java/com/genymobile/scrcpy/device/Point.java class Point (line 5) | public class Point { method Point (line 9) | public Point(int x, int y) { method getX (line 14) | public int getX() { method getY (line 18) | public int getY() { method equals (line 22) | @Override method hashCode (line 34) | @Override method toString (line 39) | @Override FILE: server/src/main/java/com/genymobile/scrcpy/device/Position.java class Position (line 5) | public class Position { method Position (line 9) | public Position(Point point, Size screenSize) { method Position (line 14) | public Position(int x, int y, int screenWidth, int screenHeight) { method getPoint (line 18) | public Point getPoint() { method getScreenSize (line 22) | public Size getScreenSize() { method rotate (line 26) | public Position rotate(int rotation) { method equals (line 39) | @Override method hashCode (line 51) | @Override method toString (line 56) | @Override FILE: server/src/main/java/com/genymobile/scrcpy/device/Size.java class Size (line 7) | public final class Size { method Size (line 11) | public Size(int width, int height) { method getWidth (line 16) | public int getWidth() { method getHeight (line 20) | public int getHeight() { method getMax (line 24) | public int getMax() { method rotate (line 28) | public Size rotate() { method limit (line 32) | public Size limit(int maxSize) { method round8 (line 62) | public Size round8() { method isMultipleOf8 (line 83) | public boolean isMultipleOf8() { method toRect (line 87) | public Rect toRect() { method equals (line 91) | @Override method hashCode (line 103) | @Override method toString (line 108) | @Override FILE: server/src/main/java/com/genymobile/scrcpy/device/Streamer.java class Streamer (line 15) | public final class Streamer { method Streamer (line 27) | public Streamer(FileDescriptor fd, Codec codec, boolean sendCodecMeta,... method getCodec (line 34) | public Codec getCodec() { method writeAudioHeader (line 38) | public void writeAudioHeader() throws IOException { method writeVideoHeader (line 47) | public void writeVideoHeader(Size videoSize) throws IOException { method writeDisableStream (line 58) | public void writeDisableStream(boolean error) throws IOException { method writePacket (line 69) | public void writePacket(ByteBuffer buffer, long pts, boolean config, b... method writePacket (line 85) | public void writePacket(ByteBuffer codecBuffer, MediaCodec.BufferInfo ... method writeFrameMeta (line 92) | private void writeFrameMeta(FileDescriptor fd, int packetSize, long pt... method fixOpusConfigPacket (line 111) | private static void fixOpusConfigPacket(ByteBuffer buffer) throws IOEx... method fixFlacConfigPacket (line 154) | private static void fixFlacConfigPacket(ByteBuffer buffer) throws IOEx... FILE: server/src/main/java/com/genymobile/scrcpy/opengl/AffineOpenGLFilter.java class AffineOpenGLFilter (line 10) | public class AffineOpenGLFilter implements OpenGLFilter { method AffineOpenGLFilter (line 24) | public AffineOpenGLFilter(AffineMatrix transform) { method init (line 28) | @Override method draw (line 96) | @Override method release (line 130) | @Override FILE: server/src/main/java/com/genymobile/scrcpy/opengl/GLUtils.java class GLUtils (line 13) | public final class GLUtils { method GLUtils (line 17) | private GLUtils() { method createProgram (line 21) | public static int createProgram(String vertexSource, String fragmentSo... method createShader (line 60) | public static int createShader(int type, String source) { method getShaderTypeString (line 81) | private static String getShaderTypeString(int type) { method checkGlError (line 95) | public static void checkGlError() { method getGlErrorMessage (line 104) | public static String getGlErrorMessage(String userError) { method toErrorString (line 113) | private static String toErrorString(int glError) { method createFloatBuffer (line 118) | public static FloatBuffer createFloatBuffer(float[] values) { FILE: server/src/main/java/com/genymobile/scrcpy/opengl/OpenGLException.java class OpenGLException (line 5) | public class OpenGLException extends IOException { method OpenGLException (line 6) | public OpenGLException(String message) { method OpenGLException (line 10) | public OpenGLException(String message, Throwable cause) { FILE: server/src/main/java/com/genymobile/scrcpy/opengl/OpenGLFilter.java type OpenGLFilter (line 3) | public interface OpenGLFilter { method init (line 10) | void init() throws OpenGLException; method draw (line 15) | void draw(int textureId, float[] texMatrix); method release (line 20) | void release(); FILE: server/src/main/java/com/genymobile/scrcpy/opengl/OpenGLRunner.java class OpenGLRunner (line 22) | public final class OpenGLRunner { method OpenGLRunner (line 41) | public OpenGLRunner(OpenGLFilter filter, float[] overrideTransformMatr... method OpenGLRunner (line 46) | public OpenGLRunner(OpenGLFilter filter) { method initOnce (line 50) | public static synchronized void initOnce() { method quit (line 61) | public static void quit() { method join (line 72) | public static void join() throws InterruptedException { method start (line 82) | public Surface start(Size inputSize, Size outputSize, Surface outputSu... method run (line 106) | private void run(Size inputSize, Size outputSize, Surface outputSurfac... method render (line 194) | private void render(Size outputSize) { method stopAndRelease (line 214) | public void stopAndRelease() { FILE: server/src/main/java/com/genymobile/scrcpy/util/AffineMatrix.java class AffineMatrix (line 24) | public class AffineMatrix { method AffineMatrix (line 42) | public AffineMatrix(double a, double b, double c, double d, double e, ... method toString (line 51) | @Override method ndcFromPixels (line 62) | public static AffineMatrix ndcFromPixels(Size size) { method ndcToPixels (line 74) | public static AffineMatrix ndcToPixels(Size size) { method apply (line 86) | public Point apply(Point point) { method multiply (line 100) | public AffineMatrix multiply(AffineMatrix rhs) { method multiplyAll (line 121) | public static AffineMatrix multiplyAll(AffineMatrix... matrices) { method invert (line 138) | public AffineMatrix invert() { method fromCenter (line 192) | public AffineMatrix fromCenter() { method withAspectRatio (line 202) | public AffineMatrix withAspectRatio(double ar) { method withAspectRatio (line 212) | public AffineMatrix withAspectRatio(Size size) { method translate (line 224) | public static AffineMatrix translate(double x, double y) { method scale (line 235) | public static AffineMatrix scale(double x, double y) { method scale (line 246) | public static AffineMatrix scale(Size from, Size to) { method reframe (line 263) | public static AffineMatrix reframe(double x, double y, double w, doubl... method rotateOrtho (line 276) | public static AffineMatrix rotateOrtho(int ccwRotation) { method hflip (line 299) | public static AffineMatrix hflip() { method vflip (line 308) | public static AffineMatrix vflip() { method rotate (line 318) | public static AffineMatrix rotate(double ccwDegrees) { method to4x4 (line 330) | public void to4x4(float[] matrix) { method to4x4 (line 363) | public float[] to4x4() { FILE: server/src/main/java/com/genymobile/scrcpy/util/Binary.java class Binary (line 3) | public final class Binary { method Binary (line 4) | private Binary() { method toUnsigned (line 8) | public static int toUnsigned(short value) { method toUnsigned (line 12) | public static int toUnsigned(byte value) { method u16FixedPointToFloat (line 22) | public static float u16FixedPointToFloat(short value) { method i16FixedPointToFloat (line 34) | public static float i16FixedPointToFloat(short value) { FILE: server/src/main/java/com/genymobile/scrcpy/util/Codec.java type Codec (line 5) | public interface Codec { type Type (line 7) | enum Type { method getType (line 12) | Type getType(); method getId (line 14) | int getId(); method getName (line 16) | String getName(); method getMimeType (line 18) | String getMimeType(); method getMimeType (line 20) | static String getMimeType(MediaCodec codec) { FILE: server/src/main/java/com/genymobile/scrcpy/util/CodecOption.java class CodecOption (line 6) | public class CodecOption { method CodecOption (line 10) | public CodecOption(String key, Object value) { method getKey (line 15) | public String getKey() { method getValue (line 19) | public Object getValue() { method parse (line 23) | public static List parse(String codecOptions) { method parseOption (line 69) | private static CodecOption parseOption(String option) { FILE: server/src/main/java/com/genymobile/scrcpy/util/CodecUtils.java class CodecUtils (line 11) | public final class CodecUtils { method CodecUtils (line 13) | private CodecUtils() { method setCodecOption (line 17) | public static void setCodecOption(MediaFormat format, String key, Obje... method getEncoders (line 29) | public static MediaCodecInfo[] getEncoders(MediaCodecList codecs, Stri... FILE: server/src/main/java/com/genymobile/scrcpy/util/Command.java class Command (line 7) | public final class Command { method Command (line 8) | private Command() { method exec (line 12) | public static void exec(String... cmd) throws IOException, Interrupted... method execReadLine (line 20) | public static String execReadLine(String... cmd) throws IOException, I... method execReadOutput (line 34) | public static String execReadOutput(String... cmd) throws IOException,... FILE: server/src/main/java/com/genymobile/scrcpy/util/HandlerExecutor.java class HandlerExecutor (line 10) | public class HandlerExecutor implements Executor { method HandlerExecutor (line 13) | public HandlerExecutor(Handler handler) { method execute (line 17) | @Override FILE: server/src/main/java/com/genymobile/scrcpy/util/IO.java class IO (line 17) | public final class IO { method IO (line 18) | private IO() { method write (line 22) | private static int write(FileDescriptor fd, ByteBuffer from) throws IO... method writeFully (line 34) | public static void writeFully(FileDescriptor fd, ByteBuffer from) thro... method writeFully (line 58) | public static void writeFully(FileDescriptor fd, byte[] buffer, int of... method toString (line 62) | public static String toString(InputStream inputStream) { method isBrokenPipe (line 71) | public static boolean isBrokenPipe(IOException e) { method isBrokenPipe (line 76) | public static boolean isBrokenPipe(Exception e) { FILE: server/src/main/java/com/genymobile/scrcpy/util/Ln.java class Ln (line 14) | public final class Ln { type Level (line 22) | public enum Level { method Ln (line 28) | private Ln() { method disableSystemStreams (line 32) | public static void disableSystemStreams() { method initLogLevel (line 45) | public static void initLogLevel(Level level) { method isEnabled (line 49) | public static boolean isEnabled(Level level) { method v (line 53) | public static void v(String message) { method d (line 60) | public static void d(String message) { method i (line 67) | public static void i(String message) { method w (line 74) | public static void w(String message, Throwable throwable) { method w (line 86) | public static void w(String message) { method e (line 90) | public static void e(String message, Throwable throwable) { method e (line 102) | public static void e(String message) { class NullOutputStream (line 106) | static class NullOutputStream extends OutputStream { method write (line 107) | @Override method write (line 112) | @Override method write (line 117) | @Override FILE: server/src/main/java/com/genymobile/scrcpy/util/LogUtils.java class LogUtils (line 32) | public final class LogUtils { method LogUtils (line 34) | private LogUtils() { method buildEncoderListMessage (line 38) | private static String buildEncoderListMessage(String type, Codec[] cod... method buildVideoEncoderListMessage (line 69) | public static String buildVideoEncoderListMessage() { method buildAudioEncoderListMessage (line 73) | public static String buildAudioEncoderListMessage() { method getHwCodecType (line 77) | @TargetApi(AndroidVersions.API_29_ANDROID_10) method buildDisplayListMessage (line 88) | public static String buildDisplayListMessage() { method getCameraFacingName (line 110) | private static String getCameraFacingName(int facing) { method isCameraBackwardCompatible (line 123) | private static boolean isCameraBackwardCompatible(CameraCharacteristic... method buildCameraListMessage (line 138) | public static String buildCameraListMessage(boolean includeSizes) { method getUniqueSet (line 208) | private static SortedSet getUniqueSet(Range[] ranges) { method buildAppListMessage (line 217) | public static String buildAppListMessage() { method buildAppListMessage (line 222) | @SuppressLint("QueryPermissionsNeeded") FILE: server/src/main/java/com/genymobile/scrcpy/util/Settings.java class Settings (line 6) | public final class Settings { method Settings (line 12) | private Settings() { method getValue (line 16) | public static String getValue(String table, String key) throws Setting... method putValue (line 22) | public static void putValue(String table, String key, String value) th... method getAndPutValue (line 29) | public static String getAndPutValue(String table, String key, String v... FILE: server/src/main/java/com/genymobile/scrcpy/util/SettingsException.java class SettingsException (line 3) | public class SettingsException extends Exception { method createMessage (line 4) | private static String createMessage(String method, String table, Strin... method SettingsException (line 8) | public SettingsException(String method, String table, String key, Stri... FILE: server/src/main/java/com/genymobile/scrcpy/util/StringUtils.java class StringUtils (line 3) | public final class StringUtils { method StringUtils (line 4) | private StringUtils() { method getUtf8TruncationIndex (line 8) | public static int getUtf8TruncationIndex(byte[] utf8, int maxLength) { FILE: server/src/main/java/com/genymobile/scrcpy/util/Threads.java class Threads (line 8) | public final class Threads { method Threads (line 9) | private Threads() { method executeSynchronouslyOn (line 13) | public static T executeSynchronouslyOn(Handler handler, Callable