Compare commits
11 Commits
pause_on_e
...
pr4373.2
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
afb7b469d3 | ||
|
|
ed43d423d9 | ||
|
|
bc8913e12b | ||
|
|
3c2013de10 | ||
|
|
8cef8bac94 | ||
|
|
0bbe8a7007 | ||
|
|
9fdb882509 | ||
|
|
8e7b041f35 | ||
|
|
9ade389069 | ||
|
|
90ba885547 | ||
|
|
7adf98e9d4 |
@@ -70,7 +70,7 @@ argv_to_string(const char *const *argv, char *buf, size_t bufsize) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
show_adb_installation_msg() {
|
show_adb_installation_msg(void) {
|
||||||
#ifndef __WINDOWS__
|
#ifndef __WINDOWS__
|
||||||
static const struct {
|
static const struct {
|
||||||
const char *binary;
|
const char *binary;
|
||||||
@@ -218,8 +218,16 @@ sc_adb_forward(struct sc_intr *intr, const char *serial, uint16_t local_port,
|
|||||||
const char *device_socket_name, unsigned flags) {
|
const char *device_socket_name, unsigned flags) {
|
||||||
char local[4 + 5 + 1]; // tcp:PORT
|
char local[4 + 5 + 1]; // tcp:PORT
|
||||||
char remote[108 + 14 + 1]; // localabstract:NAME
|
char remote[108 + 14 + 1]; // localabstract:NAME
|
||||||
sprintf(local, "tcp:%" PRIu16, local_port);
|
|
||||||
snprintf(remote, sizeof(remote), "localabstract:%s", device_socket_name);
|
int r = snprintf(local, sizeof(local), "tcp:%" PRIu16, local_port);
|
||||||
|
assert(r != -1 && (size_t) r < sizeof(local));
|
||||||
|
|
||||||
|
r = snprintf(remote, sizeof(remote), "localabstract:%s",
|
||||||
|
device_socket_name);
|
||||||
|
if (r == -1 || (size_t) r >= sizeof(remote)) {
|
||||||
|
LOGE("Device socket name too long");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
assert(serial);
|
assert(serial);
|
||||||
const char *const argv[] =
|
const char *const argv[] =
|
||||||
@@ -233,7 +241,9 @@ bool
|
|||||||
sc_adb_forward_remove(struct sc_intr *intr, const char *serial,
|
sc_adb_forward_remove(struct sc_intr *intr, const char *serial,
|
||||||
uint16_t local_port, unsigned flags) {
|
uint16_t local_port, unsigned flags) {
|
||||||
char local[4 + 5 + 1]; // tcp:PORT
|
char local[4 + 5 + 1]; // tcp:PORT
|
||||||
sprintf(local, "tcp:%" PRIu16, local_port);
|
int r = snprintf(local, sizeof(local), "tcp:%" PRIu16, local_port);
|
||||||
|
assert(r != -1 && (size_t) r < sizeof(local));
|
||||||
|
(void) r;
|
||||||
|
|
||||||
assert(serial);
|
assert(serial);
|
||||||
const char *const argv[] =
|
const char *const argv[] =
|
||||||
@@ -249,8 +259,16 @@ sc_adb_reverse(struct sc_intr *intr, const char *serial,
|
|||||||
unsigned flags) {
|
unsigned flags) {
|
||||||
char local[4 + 5 + 1]; // tcp:PORT
|
char local[4 + 5 + 1]; // tcp:PORT
|
||||||
char remote[108 + 14 + 1]; // localabstract:NAME
|
char remote[108 + 14 + 1]; // localabstract:NAME
|
||||||
sprintf(local, "tcp:%" PRIu16, local_port);
|
int r = snprintf(local, sizeof(local), "tcp:%" PRIu16, local_port);
|
||||||
snprintf(remote, sizeof(remote), "localabstract:%s", device_socket_name);
|
assert(r != -1 && (size_t) r < sizeof(local));
|
||||||
|
|
||||||
|
r = snprintf(remote, sizeof(remote), "localabstract:%s",
|
||||||
|
device_socket_name);
|
||||||
|
if (r == -1 || (size_t) r >= sizeof(remote)) {
|
||||||
|
LOGE("Device socket name too long");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
assert(serial);
|
assert(serial);
|
||||||
const char *const argv[] =
|
const char *const argv[] =
|
||||||
SC_ADB_COMMAND("-s", serial, "reverse", remote, local);
|
SC_ADB_COMMAND("-s", serial, "reverse", remote, local);
|
||||||
@@ -263,7 +281,12 @@ bool
|
|||||||
sc_adb_reverse_remove(struct sc_intr *intr, const char *serial,
|
sc_adb_reverse_remove(struct sc_intr *intr, const char *serial,
|
||||||
const char *device_socket_name, unsigned flags) {
|
const char *device_socket_name, unsigned flags) {
|
||||||
char remote[108 + 14 + 1]; // localabstract:NAME
|
char remote[108 + 14 + 1]; // localabstract:NAME
|
||||||
snprintf(remote, sizeof(remote), "localabstract:%s", device_socket_name);
|
int r = snprintf(remote, sizeof(remote), "localabstract:%s",
|
||||||
|
device_socket_name);
|
||||||
|
if (r == -1 || (size_t) r >= sizeof(remote)) {
|
||||||
|
LOGE("Device socket name too long");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
assert(serial);
|
assert(serial);
|
||||||
const char *const argv[] =
|
const char *const argv[] =
|
||||||
@@ -333,7 +356,9 @@ bool
|
|||||||
sc_adb_tcpip(struct sc_intr *intr, const char *serial, uint16_t port,
|
sc_adb_tcpip(struct sc_intr *intr, const char *serial, uint16_t port,
|
||||||
unsigned flags) {
|
unsigned flags) {
|
||||||
char port_string[5 + 1];
|
char port_string[5 + 1];
|
||||||
sprintf(port_string, "%" PRIu16, port);
|
int r = snprintf(port_string, sizeof(port_string), "%" PRIu16, port);
|
||||||
|
assert(r != -1 && (size_t) r < sizeof(port_string));
|
||||||
|
(void) r;
|
||||||
|
|
||||||
assert(serial);
|
assert(serial);
|
||||||
const char *const argv[] =
|
const char *const argv[] =
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
#include "util/log.h"
|
#include "util/log.h"
|
||||||
#include "util/str.h"
|
#include "util/str.h"
|
||||||
|
|
||||||
bool
|
static bool
|
||||||
sc_adb_parse_device(char *line, struct sc_adb_device *device) {
|
sc_adb_parse_device(char *line, struct sc_adb_device *device) {
|
||||||
// One device line looks like:
|
// One device line looks like:
|
||||||
// "0123456789abcdef device usb:2-1 product:MyProduct model:MyModel "
|
// "0123456789abcdef device usb:2-1 product:MyProduct model:MyModel "
|
||||||
|
|||||||
@@ -1085,7 +1085,7 @@ print_shortcut(const struct sc_shortcut *shortcut, unsigned cols) {
|
|||||||
while (shortcut->shortcuts[i]) {
|
while (shortcut->shortcuts[i]) {
|
||||||
printf(" %s\n", shortcut->shortcuts[i]);
|
printf(" %s\n", shortcut->shortcuts[i]);
|
||||||
++i;
|
++i;
|
||||||
};
|
}
|
||||||
|
|
||||||
char *text = sc_str_wrap_lines(shortcut->text, cols, 8);
|
char *text = sc_str_wrap_lines(shortcut->text, cols, 8);
|
||||||
if (!text) {
|
if (!text) {
|
||||||
@@ -2261,7 +2261,7 @@ sc_get_pause_on_exit(int argc, char *argv[]) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return SC_PAUSE_ON_EXIT_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
|
|||||||
@@ -271,7 +271,7 @@ error:
|
|||||||
}
|
}
|
||||||
|
|
||||||
SDL_Surface *
|
SDL_Surface *
|
||||||
scrcpy_icon_load() {
|
scrcpy_icon_load(void) {
|
||||||
char *icon_path = get_icon_path();
|
char *icon_path = get_icon_path();
|
||||||
if (!icon_path) {
|
if (!icon_path) {
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
#include "util/str.h"
|
#include "util/str.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int
|
static int
|
||||||
main_scrcpy(int argc, char *argv[]) {
|
main_scrcpy(int argc, char *argv[]) {
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
// disable buffering, we want logs immediately
|
// disable buffering, we want logs immediately
|
||||||
|
|||||||
@@ -90,7 +90,7 @@ push_event(uint32_t type, const char *name) {
|
|||||||
#define PUSH_EVENT(TYPE) push_event(TYPE, # TYPE)
|
#define PUSH_EVENT(TYPE) push_event(TYPE, # TYPE)
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
BOOL WINAPI windows_ctrl_handler(DWORD ctrl_type) {
|
static BOOL WINAPI windows_ctrl_handler(DWORD ctrl_type) {
|
||||||
if (ctrl_type == CTRL_C_EVENT) {
|
if (ctrl_type == CTRL_C_EVENT) {
|
||||||
PUSH_EVENT(SDL_QUIT);
|
PUSH_EVENT(SDL_QUIT);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@@ -297,7 +297,7 @@ sc_timeout_on_timeout(struct sc_timeout *timeout, void *userdata) {
|
|||||||
|
|
||||||
// Generate a scrcpy id to differentiate multiple running scrcpy instances
|
// Generate a scrcpy id to differentiate multiple running scrcpy instances
|
||||||
static uint32_t
|
static uint32_t
|
||||||
scrcpy_generate_scid() {
|
scrcpy_generate_scid(void) {
|
||||||
struct sc_rand rand;
|
struct sc_rand rand;
|
||||||
sc_rand_init(&rand);
|
sc_rand_init(&rand);
|
||||||
// Only use 31 bits to avoid issues with signed values on the Java-side
|
// Only use 31 bits to avoid issues with signed values on the Java-side
|
||||||
|
|||||||
@@ -86,14 +86,15 @@ sc_server_params_copy(struct sc_server_params *dst,
|
|||||||
// The params reference user-allocated memory, so we must copy them to
|
// The params reference user-allocated memory, so we must copy them to
|
||||||
// handle them from another thread
|
// handle them from another thread
|
||||||
|
|
||||||
#define COPY(FIELD) \
|
#define COPY(FIELD) do { \
|
||||||
dst->FIELD = NULL; \
|
dst->FIELD = NULL; \
|
||||||
if (src->FIELD) { \
|
if (src->FIELD) { \
|
||||||
dst->FIELD = strdup(src->FIELD); \
|
dst->FIELD = strdup(src->FIELD); \
|
||||||
if (!dst->FIELD) { \
|
if (!dst->FIELD) { \
|
||||||
goto error; \
|
goto error; \
|
||||||
} \
|
} \
|
||||||
}
|
} \
|
||||||
|
} while(0)
|
||||||
|
|
||||||
COPY(req_serial);
|
COPY(req_serial);
|
||||||
COPY(crop);
|
COPY(crop);
|
||||||
@@ -215,13 +216,13 @@ execute_server(struct sc_server *server,
|
|||||||
cmd[count++] = SCRCPY_VERSION;
|
cmd[count++] = SCRCPY_VERSION;
|
||||||
|
|
||||||
unsigned dyn_idx = count; // from there, the strings are allocated
|
unsigned dyn_idx = count; // from there, the strings are allocated
|
||||||
#define ADD_PARAM(fmt, ...) { \
|
#define ADD_PARAM(fmt, ...) do { \
|
||||||
char *p; \
|
char *p; \
|
||||||
if (asprintf(&p, fmt, ## __VA_ARGS__) == -1) { \
|
if (asprintf(&p, fmt, ## __VA_ARGS__) == -1) { \
|
||||||
goto end; \
|
goto end; \
|
||||||
} \
|
} \
|
||||||
cmd[count++] = p; \
|
cmd[count++] = p; \
|
||||||
}
|
} while(0)
|
||||||
|
|
||||||
ADD_PARAM("scid=%08x", params->scid);
|
ADD_PARAM("scid=%08x", params->scid);
|
||||||
ADD_PARAM("log_level=%s", log_level_to_server_string(params->log_level));
|
ADD_PARAM("log_level=%s", log_level_to_server_string(params->log_level));
|
||||||
|
|||||||
@@ -27,7 +27,8 @@
|
|||||||
// keyboard support, though OS could support more keys via modifying the report
|
// keyboard support, though OS could support more keys via modifying the report
|
||||||
// desc. 6 should be enough for scrcpy.
|
// desc. 6 should be enough for scrcpy.
|
||||||
#define HID_KEYBOARD_MAX_KEYS 6
|
#define HID_KEYBOARD_MAX_KEYS 6
|
||||||
#define HID_KEYBOARD_EVENT_SIZE (2 + HID_KEYBOARD_MAX_KEYS)
|
#define HID_KEYBOARD_EVENT_SIZE \
|
||||||
|
(HID_KEYBOARD_INDEX_KEYS + HID_KEYBOARD_MAX_KEYS)
|
||||||
|
|
||||||
#define HID_RESERVED 0x00
|
#define HID_RESERVED 0x00
|
||||||
#define HID_ERROR_ROLL_OVER 0x01
|
#define HID_ERROR_ROLL_OVER 0x01
|
||||||
|
|||||||
@@ -93,7 +93,7 @@ sc_usb_device_move(struct sc_usb_device *dst, struct sc_usb_device *src) {
|
|||||||
src->product = NULL;
|
src->product = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
static void
|
||||||
sc_usb_devices_destroy(struct sc_vec_usb_devices *usb_devices) {
|
sc_usb_devices_destroy(struct sc_vec_usb_devices *usb_devices) {
|
||||||
for (size_t i = 0; i < usb_devices->size; ++i) {
|
for (size_t i = 0; i < usb_devices->size; ++i) {
|
||||||
sc_usb_device_destroy(&usb_devices->data[i]);
|
sc_usb_device_destroy(&usb_devices->data[i]);
|
||||||
|
|||||||
@@ -147,7 +147,7 @@ sc_sdl_log_print(void *userdata, int category, SDL_LogPriority priority,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
sc_log_configure() {
|
sc_log_configure(void) {
|
||||||
SDL_LogSetOutputFunction(sc_sdl_log_print, NULL);
|
SDL_LogSetOutputFunction(sc_sdl_log_print, NULL);
|
||||||
// Redirect FFmpeg logs to SDL logs
|
// Redirect FFmpeg logs to SDL logs
|
||||||
av_log_set_callback(sc_av_log_callback);
|
av_log_set_callback(sc_av_log_callback);
|
||||||
|
|||||||
@@ -36,6 +36,6 @@ sc_log_windows_error(const char *prefix, int error);
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
void
|
void
|
||||||
sc_log_configure();
|
sc_log_configure(void);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -190,10 +190,10 @@ sc_vecdeque_reallocdata_(void *ptr, size_t newcap, size_t item_size,
|
|||||||
|
|
||||||
size_t right_len = MIN(size, oldcap - oldorigin);
|
size_t right_len = MIN(size, oldcap - oldorigin);
|
||||||
assert(right_len);
|
assert(right_len);
|
||||||
memcpy(newptr, ptr + (oldorigin * item_size), right_len * item_size);
|
memcpy(newptr, (char *) ptr + (oldorigin * item_size), right_len * item_size);
|
||||||
|
|
||||||
if (size > right_len) {
|
if (size > right_len) {
|
||||||
memcpy(newptr + (right_len * item_size), ptr,
|
memcpy((char *) newptr + (right_len * item_size), ptr,
|
||||||
(size - right_len) * item_size);
|
(size - right_len) * item_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
#include "util/bytebuf.h"
|
#include "util/bytebuf.h"
|
||||||
|
|
||||||
void test_bytebuf_simple(void) {
|
static void test_bytebuf_simple(void) {
|
||||||
struct sc_bytebuf buf;
|
struct sc_bytebuf buf;
|
||||||
uint8_t data[20];
|
uint8_t data[20];
|
||||||
|
|
||||||
@@ -34,7 +34,7 @@ void test_bytebuf_simple(void) {
|
|||||||
sc_bytebuf_destroy(&buf);
|
sc_bytebuf_destroy(&buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_bytebuf_boundaries(void) {
|
static void test_bytebuf_boundaries(void) {
|
||||||
struct sc_bytebuf buf;
|
struct sc_bytebuf buf;
|
||||||
uint8_t data[20];
|
uint8_t data[20];
|
||||||
|
|
||||||
@@ -71,7 +71,7 @@ void test_bytebuf_boundaries(void) {
|
|||||||
sc_bytebuf_destroy(&buf);
|
sc_bytebuf_destroy(&buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_bytebuf_two_steps_write(void) {
|
static void test_bytebuf_two_steps_write(void) {
|
||||||
struct sc_bytebuf buf;
|
struct sc_bytebuf buf;
|
||||||
uint8_t data[20];
|
uint8_t data[20];
|
||||||
|
|
||||||
|
|||||||
@@ -358,7 +358,7 @@ static void test_index_of_column(void) {
|
|||||||
assert(sc_str_index_of_column(" a bc d", 1, " ") == 2);
|
assert(sc_str_index_of_column(" a bc d", 1, " ") == 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void test_remove_trailing_cr() {
|
static void test_remove_trailing_cr(void) {
|
||||||
char s[] = "abc\r";
|
char s[] = "abc\r";
|
||||||
sc_str_remove_trailing_cr(s, sizeof(s) - 1);
|
sc_str_remove_trailing_cr(s, sizeof(s) - 1);
|
||||||
assert(!strcmp(s, "abc"));
|
assert(!strcmp(s, "abc"));
|
||||||
|
|||||||
@@ -102,7 +102,7 @@ static void test_vecdeque_reserve(void) {
|
|||||||
sc_vecdeque_destroy(&vdq);
|
sc_vecdeque_destroy(&vdq);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void test_vecdeque_grow() {
|
static void test_vecdeque_grow(void) {
|
||||||
struct SC_VECDEQUE(int) vdq = SC_VECDEQUE_INITIALIZER;
|
struct SC_VECDEQUE(int) vdq = SC_VECDEQUE_INITIALIZER;
|
||||||
|
|
||||||
bool ok = sc_vecdeque_reserve(&vdq, 20);
|
bool ok = sc_vecdeque_reserve(&vdq, 20);
|
||||||
@@ -142,7 +142,7 @@ static void test_vecdeque_grow() {
|
|||||||
sc_vecdeque_destroy(&vdq);
|
sc_vecdeque_destroy(&vdq);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void test_vecdeque_push_hole() {
|
static void test_vecdeque_push_hole(void) {
|
||||||
struct SC_VECDEQUE(int) vdq = SC_VECDEQUE_INITIALIZER;
|
struct SC_VECDEQUE(int) vdq = SC_VECDEQUE_INITIALIZER;
|
||||||
|
|
||||||
bool ok = sc_vecdeque_reserve(&vdq, 20);
|
bool ok = sc_vecdeque_reserve(&vdq, 20);
|
||||||
|
|||||||
@@ -187,7 +187,7 @@ static void test_vector_index_of(void) {
|
|||||||
sc_vector_destroy(&vec);
|
sc_vector_destroy(&vec);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void test_vector_grow() {
|
static void test_vector_grow(void) {
|
||||||
struct SC_VECTOR(int) vec = SC_VECTOR_INITIALIZER;
|
struct SC_VECTOR(int) vec = SC_VECTOR_INITIALIZER;
|
||||||
|
|
||||||
bool ok;
|
bool ok;
|
||||||
|
|||||||
@@ -7,6 +7,8 @@ project('scrcpy', 'c',
|
|||||||
'b_ndebug=if-release',
|
'b_ndebug=if-release',
|
||||||
])
|
])
|
||||||
|
|
||||||
|
add_project_arguments('-Wmissing-prototypes', language: 'c')
|
||||||
|
|
||||||
if get_option('compile_app')
|
if get_option('compile_app')
|
||||||
subdir('app')
|
subdir('app')
|
||||||
endif
|
endif
|
||||||
|
|||||||
Reference in New Issue
Block a user