Function bodies 55 total
handle_signal function · c · L26-L30 (5 LOC)screen-daemon/main.c
static void handle_signal(int sig) {
(void)sig;
g_running = false;
}xrgb8888_to_rgb565 function · c · L33-L36 (4 LOC)screen-daemon/main.c
static inline uint16_t xrgb8888_to_rgb565(uint8_t r, uint8_t g, uint8_t b) {
return (uint16_t)(((r & 0xF8u) << 8) | ((g & 0xFCu) << 3) | (b >> 3));
}scale_region_to_screen function · c · L49-L88 (40 LOC)screen-daemon/main.c
static void scale_region_to_screen(
const uint8_t* src,
int src_x, int src_y,
int src_w, int src_h,
int src_stride, int src_bpp,
uint16_t* dst)
{
for (int dy = 0; dy < MK3_SCREEN_H; dy++) {
int sy = src_y + (dy * src_h) / MK3_SCREEN_H;
const uint8_t* src_row = src + (size_t)sy * src_stride;
for (int dx = 0; dx < MK3_SCREEN_W; dx++) {
int sx = src_x + (dx * src_w) / MK3_SCREEN_W;
const uint8_t* px = src_row + (size_t)sx * src_bpp;
uint8_t r, g, b;
if (src_bpp == 4) {
/* XRGB8888 little-endian: [B, G, R, X] */
b = px[0];
g = px[1];
r = px[2];
} else if (src_bpp == 3) {
/* Packed BGR or RGB — assume BGR for DRM/LinuxFB default */
b = px[0];
g = px[1];
r = px[2];
} else if (src_bpp == 2) {
/* Already RGB565 —print_usage function · c · L91-L106 (16 LOC)screen-daemon/main.c
static void print_usage(const char* prog) {
fprintf(stderr,
"Usage: %s [OPTIONS]\n"
"\n"
"Mirror the framebuffer to the two MK3 480x272 screens.\n"
"\n"
"Options:\n"
" --resolution WxH Source framebuffer resolution to capture\n"
" (default: %dx%d)\n"
" --fps N Target frame rate (default: %d)\n"
" --no-partial Disable partial display rendering (default)\n"
" --partial Enable partial display rendering\n"
" --help Show this message\n",
prog, DEFAULT_SRC_W, DEFAULT_SRC_H, DEFAULT_FPS);
}main function · c · L109-L315 (207 LOC)screen-daemon/main.c
int main(int argc, char* argv[]) {
int src_w = DEFAULT_SRC_W;
int src_h = DEFAULT_SRC_H;
int fps = DEFAULT_FPS;
bool no_partial = true; /* partial rendering disabled by default */
/* ── Argument parsing ────────────────────────────────────────────── */
for (int i = 1; i < argc; i++) {
if (strcmp(argv[i], "--help") == 0) {
print_usage(argv[0]);
return 0;
} else if (strcmp(argv[i], "--resolution") == 0) {
if (i + 1 >= argc) {
fprintf(stderr, "error: --resolution requires WxH argument\n");
return 1;
}
i++;
if (sscanf(argv[i], "%dx%d", &src_w, &src_h) != 2) {
fprintf(stderr, "error: invalid resolution '%s' (expected WxH)\n", argv[i]);
return 1;
}
} else if (strcmp(argv[i], "--fps") == 0) {
if (i + 1 >= argc) {
fprintf(stderr, "error: --fps require‹ prevpage 2 / 2