Rename 'uid' to 'scid'

A random identifier is generated to differentiate multiple running
scrcpy instances. Rename it from 'uid' to 'scid' (scrcpy id) not to
confuse it with Linux UID.

Fixes #3729 <https://github.com/Genymobile/scrcpy/issues/3729>
Refs 4315be1648
This commit is contained in:
Romain Vimont 2023-02-11 09:52:31 +01:00
parent 49eb326ce9
commit 439a1fd4ed
6 changed files with 25 additions and 24 deletions

View file

@ -273,8 +273,9 @@ sc_server_on_disconnected(struct sc_server *server, void *userdata) {
// event // event
} }
// Generate a scrcpy id to differentiate multiple running scrcpy instances
static uint32_t static uint32_t
scrcpy_generate_uid() { scrcpy_generate_scid() {
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
@ -314,10 +315,10 @@ scrcpy(struct scrcpy_options *options) {
struct sc_acksync *acksync = NULL; struct sc_acksync *acksync = NULL;
uint32_t uid = scrcpy_generate_uid(); uint32_t scid = scrcpy_generate_scid();
struct sc_server_params params = { struct sc_server_params params = {
.uid = uid, .scid = scid,
.req_serial = options->serial, .req_serial = options->serial,
.select_usb = options->select_usb, .select_usb = options->select_usb,
.select_tcpip = options->select_tcpip, .select_tcpip = options->select_tcpip,

View file

@ -213,7 +213,7 @@ execute_server(struct sc_server *server,
cmd[count++] = p; \ cmd[count++] = p; \
} }
ADD_PARAM("uid=%08x", params->uid); 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));
ADD_PARAM("bit_rate=%" PRIu32, params->bit_rate); ADD_PARAM("bit_rate=%" PRIu32, params->bit_rate);
@ -787,7 +787,7 @@ run_server(void *data) {
LOGD("Device serial: %s", serial); LOGD("Device serial: %s", serial);
int r = asprintf(&server->device_socket_name, SC_SOCKET_NAME_PREFIX "%08x", int r = asprintf(&server->device_socket_name, SC_SOCKET_NAME_PREFIX "%08x",
params->uid); params->scid);
if (r == -1) { if (r == -1) {
LOG_OOM(); LOG_OOM();
goto error_connection_failed; goto error_connection_failed;

View file

@ -22,7 +22,7 @@ struct sc_server_info {
}; };
struct sc_server_params { struct sc_server_params {
uint32_t uid; uint32_t scid;
const char *req_serial; const char *req_serial;
enum sc_log_level log_level; enum sc_log_level log_level;
enum sc_codec codec; enum sc_codec codec;

View file

@ -46,17 +46,17 @@ public final class DesktopConnection implements Closeable {
return localSocket; return localSocket;
} }
private static String getSocketName(int uid) { private static String getSocketName(int scid) {
if (uid == -1) { if (scid == -1) {
// If no UID is set, use "scrcpy" to simplify using scrcpy-server alone // If no SCID is set, use "scrcpy" to simplify using scrcpy-server alone
return SOCKET_NAME_PREFIX; return SOCKET_NAME_PREFIX;
} }
return SOCKET_NAME_PREFIX + String.format("_%08x", uid); return SOCKET_NAME_PREFIX + String.format("_%08x", scid);
} }
public static DesktopConnection open(int uid, boolean tunnelForward, boolean control, boolean sendDummyByte) throws IOException { public static DesktopConnection open(int scid, boolean tunnelForward, boolean control, boolean sendDummyByte) throws IOException {
String socketName = getSocketName(uid); String socketName = getSocketName(scid);
LocalSocket videoSocket; LocalSocket videoSocket;
LocalSocket controlSocket = null; LocalSocket controlSocket = null;

View file

@ -7,7 +7,7 @@ import java.util.List;
public class Options { public class Options {
private Ln.Level logLevel = Ln.Level.DEBUG; private Ln.Level logLevel = Ln.Level.DEBUG;
private int uid = -1; // 31-bit non-negative value, or -1 private int scid = -1; // 31-bit non-negative value, or -1
private int maxSize; private int maxSize;
private VideoCodec codec = VideoCodec.H264; private VideoCodec codec = VideoCodec.H264;
private int bitRate = 8000000; private int bitRate = 8000000;
@ -41,12 +41,12 @@ public class Options {
this.logLevel = logLevel; this.logLevel = logLevel;
} }
public int getUid() { public int getScid() {
return uid; return scid;
} }
public void setUid(int uid) { public void setScid(int scid) {
this.uid = uid; this.scid = scid;
} }
public int getMaxSize() { public int getMaxSize() {

View file

@ -66,7 +66,7 @@ public final class Server {
Thread initThread = startInitThread(options); Thread initThread = startInitThread(options);
int uid = options.getUid(); int scid = options.getScid();
boolean tunnelForward = options.isTunnelForward(); boolean tunnelForward = options.isTunnelForward();
boolean control = options.getControl(); boolean control = options.getControl();
boolean sendDummyByte = options.getSendDummyByte(); boolean sendDummyByte = options.getSendDummyByte();
@ -84,7 +84,7 @@ public final class Server {
Workarounds.fillAppInfo(); Workarounds.fillAppInfo();
} }
try (DesktopConnection connection = DesktopConnection.open(uid, tunnelForward, control, sendDummyByte)) { try (DesktopConnection connection = DesktopConnection.open(scid, tunnelForward, control, sendDummyByte)) {
VideoCodec codec = options.getCodec(); VideoCodec codec = options.getCodec();
if (options.getSendDeviceMeta()) { if (options.getSendDeviceMeta()) {
Size videoSize = device.getScreenInfo().getVideoSize(); Size videoSize = device.getScreenInfo().getVideoSize();
@ -158,12 +158,12 @@ public final class Server {
String key = arg.substring(0, equalIndex); String key = arg.substring(0, equalIndex);
String value = arg.substring(equalIndex + 1); String value = arg.substring(equalIndex + 1);
switch (key) { switch (key) {
case "uid": case "scid":
int uid = Integer.parseInt(value, 0x10); int scid = Integer.parseInt(value, 0x10);
if (uid < -1) { if (scid < -1) {
throw new IllegalArgumentException("uid may not be negative (except -1 for 'none'): " + uid); throw new IllegalArgumentException("scid may not be negative (except -1 for 'none'): " + scid);
} }
options.setUid(uid); options.setScid(scid);
break; break;
case "log_level": case "log_level":
Ln.Level level = Ln.Level.valueOf(value.toUpperCase(Locale.ENGLISH)); Ln.Level level = Ln.Level.valueOf(value.toUpperCase(Locale.ENGLISH));