Skip to content

Commit 859289e

Browse files
Hexxehjplexer
authored andcommitted
capabilities: Create APP_SCALING capability to enable scaling for fake QEMU targets
Signed-off-by: Liam McLoughlin <lmcloughlin@google.com>
1 parent b789729 commit 859289e

7 files changed

Lines changed: 38 additions & 15 deletions

File tree

platform/platform_capabilities.py

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,8 @@
5151
'HAS_DYNAMIC_BACKLIGHT',
5252
'HAS_COLOR_BACKLIGHT',
5353
'HAS_SPEAKER',
54-
'HAS_ACCEL_SENSITIVITY'
54+
'HAS_ACCEL_SENSITIVITY',
55+
'HAS_APP_SCALING',
5556
}
5657

5758
board_capability_dicts = [
@@ -150,7 +151,8 @@
150151
'HAS_VIBE_SCORES',
151152
'USE_PARALLEL_FLASH',
152153
'HAS_WEATHER',
153-
'HAS_PUTBYTES_PREACKING'
154+
'HAS_PUTBYTES_PREACKING',
155+
'HAS_APP_SCALING'
154156
}
155157
},
156158
{
@@ -226,6 +228,7 @@
226228
'USE_PARALLEL_FLASH',
227229
'HAS_WEATHER',
228230
'HAS_PUTBYTES_PREACKING',
231+
'HAS_APP_SCALING'
229232
},
230233
},
231234
{
@@ -296,7 +299,8 @@
296299
'HAS_TIMELINE_PEEK',
297300
'HAS_VIBE_SCORES',
298301
'HAS_WEATHER',
299-
'HAS_PUTBYTES_PREACKING'
302+
'HAS_PUTBYTES_PREACKING',
303+
'HAS_APP_SCALING'
300304
}
301305
},
302306
{
@@ -321,7 +325,8 @@
321325
'HAS_VIBE_SCORES',
322326
'HAS_WEATHER',
323327
'HAS_PUTBYTES_PREACKING',
324-
'HAS_TOUCHSCREEN'
328+
'HAS_TOUCHSCREEN',
329+
'HAS_APP_SCALING'
325330
}
326331
},
327332
{
@@ -378,6 +383,7 @@
378383
'HAS_COLOR_BACKLIGHT',
379384
'HAS_SPEAKER',
380385
'HAS_ACCEL_SENSITIVITY',
386+
'HAS_APP_SCALING'
381387
},
382388
},
383389
{
@@ -404,6 +410,7 @@
404410
'HAS_MAGNETOMETER',
405411
'HAS_PBLBOOT',
406412
'HAS_ACCEL_SENSITIVITY',
413+
'HAS_APP_SCALING'
407414
},
408415
},
409416
]

src/fw/apps/system_apps/settings/settings_display.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ static void prv_timeout_menu_push(SettingsDisplayData *data) {
164164

165165
// Legacy App Mode Settings (Obelix only)
166166
/////////////////////////////
167-
#if PLATFORM_OBELIX || PLATFORM_GETAFIX || PLATFORM_SNOWY_EMERY || PLATFORM_SPALDING_GABBRO
167+
#if CAPABILITY_HAS_APP_SCALING
168168
static const char *s_legacy_app_mode_labels[] = {
169169
i18n_noop("Centered"),
170170
i18n_noop("Scaled")
@@ -207,7 +207,7 @@ enum SettingsDisplayItem {
207207
#if PLATFORM_SPALDING && !PLATFORM_SPALDING_GABBRO
208208
SettingsDisplayAdjustAlignment,
209209
#endif
210-
#if PLATFORM_OBELIX || PLATFORM_GETAFIX || PLATFORM_SNOWY_EMERY || PLATFORM_SPALDING_GABBRO
210+
#if CAPABILITY_HAS_APP_SCALING
211211
SettingsDisplayLegacyAppMode,
212212
#endif
213213
NumSettingsDisplayItems
@@ -265,7 +265,7 @@ static void prv_select_click_cb(SettingsCallbacks *context, uint16_t row) {
265265
settings_display_calibration_push(app_state_get_window_stack());
266266
break;
267267
#endif
268-
#if PLATFORM_OBELIX || PLATFORM_GETAFIX || PLATFORM_SNOWY_EMERY || PLATFORM_SPALDING_GABBRO
268+
#if CAPABILITY_HAS_APP_SCALING
269269
case SettingsDisplayLegacyAppMode:
270270
prv_legacy_app_mode_menu_push(data);
271271
break;
@@ -365,7 +365,7 @@ static void prv_draw_row_cb(SettingsCallbacks *context, GContext *ctx,
365365
title = i18n_noop("Screen Alignment");
366366
break;
367367
#endif
368-
#if PLATFORM_OBELIX || PLATFORM_GETAFIX || PLATFORM_SNOWY_EMERY || PLATFORM_SPALDING_GABBRO
368+
#if CAPABILITY_HAS_APP_SCALING
369369
case SettingsDisplayLegacyAppMode:
370370
title = i18n_noop("Legacy Apps");
371371
subtitle = (shell_prefs_get_legacy_app_render_mode() == LegacyAppRenderMode_Scaling) ?

src/fw/services/common/compositor/compositor.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ void compositor_render_app(void) {
176176
const int16_t disp_width = DISP_COLS;
177177
const int16_t disp_height = DISP_ROWS;
178178

179-
#if (PLATFORM_OBELIX || PLATFORM_GETAFIX) && !RECOVERY_FW
179+
#if (CAPABILITY_HAS_APP_SCALING) && !RECOVERY_FW
180180
// Check if we should use scaling mode for legacy apps
181181
if (shell_prefs_get_legacy_app_render_mode() == LegacyAppRenderMode_Scaling) {
182182
// Scale legacy apps to fill the display using nearest-neighbor scaling

src/fw/shell/normal/prefs.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -209,11 +209,11 @@ static uint16_t s_timeline_peek_before_time_m =
209209
#endif
210210

211211
#define PREF_KEY_COREDUMP_ON_REQUEST "coredumpOnRequest"
212-
#if PLATFORM_OBELIX || PLATFORM_GETAFIX || PLATFORM_SNOWY_EMERY || PLATFORM_SPALDING_GABBRO
212+
#if CAPABILITY_HAS_APP_SCALING
213213
#define PREF_KEY_LEGACY_APP_RENDER_MODE "legacyAppRenderMode"
214214
#endif
215215
static bool s_coredump_on_request_enabled = false;
216-
#if PLATFORM_OBELIX || PLATFORM_GETAFIX || PLATFORM_SNOWY_EMERY || PLATFORM_SPALDING_GABBRO
216+
#if CAPABILITY_HAS_APP_SCALING
217217
static uint8_t s_legacy_app_render_mode = 1; // Default to scaled mode
218218
#endif
219219

@@ -588,7 +588,7 @@ static bool prv_set_s_coredump_on_request_enabled(bool *enabled) {
588588
return true;
589589
}
590590

591-
#if PLATFORM_OBELIX || PLATFORM_GETAFIX || PLATFORM_SNOWY_EMERY || PLATFORM_SPALDING_GABBRO
591+
#if CAPABILITY_HAS_APP_SCALING
592592
static bool prv_set_s_legacy_app_render_mode(uint8_t *mode) {
593593
if (*mode >= LegacyAppRenderModeCount) {
594594
return false; // Invalid value
@@ -1546,7 +1546,7 @@ void shell_prefs_set_coredump_on_request(bool enabled) {
15461546
prv_pref_set(PREF_KEY_COREDUMP_ON_REQUEST, &enabled, sizeof(enabled));
15471547
}
15481548

1549-
#if PLATFORM_OBELIX || PLATFORM_GETAFIX || PLATFORM_SNOWY_EMERY || PLATFORM_SPALDING_GABBRO
1549+
#if CAPABILITY_HAS_APP_SCALING
15501550
LegacyAppRenderMode shell_prefs_get_legacy_app_render_mode(void) {
15511551
return (LegacyAppRenderMode)s_legacy_app_render_mode;
15521552
}

src/fw/shell/normal/prefs_values.h.inc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@
5151
PREFS_MACRO(PREF_KEY_TIMELINE_PEEK_BEFORE_TIME_M, s_timeline_peek_before_time_m)
5252
#endif
5353
PREFS_MACRO(PREF_KEY_COREDUMP_ON_REQUEST, s_coredump_on_request_enabled)
54-
#if PLATFORM_OBELIX || PLATFORM_GETAFIX
54+
#if CAPABILITY_HAS_APP_SCALING
5555
PREFS_MACRO(PREF_KEY_LEGACY_APP_RENDER_MODE, s_legacy_app_render_mode)
5656
#endif
5757

src/fw/shell/prefs.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ uint16_t timeline_peek_prefs_get_before_time(void);
127127
bool shell_prefs_can_coredump_on_request(void);
128128
void shell_prefs_set_coredump_on_request(bool enabled);
129129

130-
#if PLATFORM_OBELIX || PLATFORM_GETAFIX || PLATFORM_SNOWY_EMERY || PLATFORM_SPALDING_GABBRO
130+
#if CAPABILITY_HAS_APP_SCALING
131131
// Legacy app rendering mode - whether to use bezel or scaling for legacy apps
132132
typedef enum LegacyAppRenderMode {
133133
LegacyAppRenderMode_Bezel = 0, // Center with black bezel (original behavior)

src/fw/shell/sdk/prefs.c

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,11 @@ _Static_assert(sizeof(PreferredContentSize) == sizeof(s_content_size),
2929
"sizeof(PreferredContentSize) grew, pref needs to be migrated!");
3030
#endif
3131

32+
#if CAPABILITY_HAS_APP_SCALING
33+
#define PREF_KEY_LEGACY_APP_RENDER_MODE "legacyAppRenderMode"
34+
static uint8_t s_legacy_app_render_mode = 1; // Default to scaled mode
35+
#endif
36+
3237
void shell_prefs_init(void) {
3338
s_mutex = mutex_create();
3439
mutex_lock(s_mutex);
@@ -280,3 +285,14 @@ GColor shell_prefs_get_apps_menu_highlight_color(void) {
280285
void shell_prefs_set_apps_menu_highlight_color(GColor color) {
281286
// Not used in SDK shell
282287
}
288+
289+
#if CAPABILITY_HAS_APP_SCALING
290+
LegacyAppRenderMode shell_prefs_get_legacy_app_render_mode(void) {
291+
return (LegacyAppRenderMode)s_legacy_app_render_mode;
292+
}
293+
294+
void shell_prefs_set_legacy_app_render_mode(LegacyAppRenderMode mode) {
295+
uint8_t mode_value = (uint8_t)mode;
296+
prv_pref_set(PREF_KEY_LEGACY_APP_RENDER_MODE, &mode_value, sizeof(mode_value));
297+
}
298+
#endif

0 commit comments

Comments
 (0)