[Feat] (MG_Remote): the in-process display server serves unix endpoints too

mobilegl_server_serve_inprocess refused anything but tcp:// because its
only supervisor was the TCP one's thread hand-off. A unix endpoint
(@abstract name or filesystem path) now runs a supervisor of the same
shape minus the TCP exposure machinery: AcceptPair pairs a client's
control and SCM_RIGHTS connections by arrival order, there is no
DataBind to route and no pre-auth gate, sessions run on threads one at
a time with Busy for a second client, the latch resets between sessions
and g_inProcessStop ends it. That gives the on-screen server the
on-device fast path: ServerOwned windows over a unix socket with shm
data, no TCP copies.

The control screen's tcp-only guard for the on-screen mode goes with
the refusal it mirrored.
This commit is contained in:
2026-09-27 07:43:56 -04:00
parent e3e890ed5d
commit c16fb5a8ac
3 changed files with 123 additions and 19 deletions
@@ -98,7 +98,7 @@ public final class ServerControlActivity extends Activity {
envField = addField(contentLayout, "Extra env (optional)", "", dp(8));
onScreenBox = new CheckBox(this);
onScreenBox.setText("On-screen window (render client frames onto this screen; tcp:// only)");
onScreenBox.setText("On-screen window (render client frames onto this screen)");
onScreenBox.setTextColor(COLOR_TEXT);
onScreenBox.setTextSize(TypedValue.COMPLEX_UNIT_SP, 13);
LinearLayout.LayoutParams boxParams = new LinearLayout.LayoutParams(
@@ -155,14 +155,6 @@ public final class ServerControlActivity extends Activity {
String token = tokenField.getText().toString();
String env = envField.getText().toString().trim();
// The in-process display server only accepts tcp:// (ServerMain's in-process arm);
// the unix forms belong to the offscreen supervisor.
if (onScreenBox.isChecked() && !endpoint.startsWith("tcp://")) {
setStatus("The on-screen display server serves tcp:// only; use a tcp:// endpoint "
+ "or uncheck On-screen window.", COLOR_FAIL);
return;
}
String probeDisplay;
Probe probe;
if (endpoint.startsWith("tcp://")) {