diff options
author | Aidan MacDonald <amachronic@protonmail.com> | 2022-04-03 11:16:39 +0100 |
---|---|---|
committer | Aidan MacDonald <amachronic@protonmail.com> | 2022-10-16 14:50:39 +0100 |
commit | 1718cf5f8a39b922eba3ad1b3c9a9570188362b1 (patch) | |
tree | 4f6bf81cb4f382ca04856b98492289825133c5ae /apps/gui/skin_engine/skin_backdrops.c | |
parent | b16bae6fe624d30631bf83290e204197ab136c12 (diff) | |
download | rockbox-1718cf5f8a39b922eba3ad1b3c9a9570188362b1.tar.gz rockbox-1718cf5f8a39b922eba3ad1b3c9a9570188362b1.zip |
Convert a number of allocations to use buflib pinning
Several places in the codebase implemented an ad-hoc form of pinning;
they can be converted to use buflib pinning instead.
Change-Id: I4450be007e80f6c9cc9f56c2929fa4b9b85ebff3
Diffstat (limited to 'apps/gui/skin_engine/skin_backdrops.c')
-rw-r--r-- | apps/gui/skin_engine/skin_backdrops.c | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/apps/gui/skin_engine/skin_backdrops.c b/apps/gui/skin_engine/skin_backdrops.c index 1def0812da..215667d585 100644 --- a/apps/gui/skin_engine/skin_backdrops.c +++ b/apps/gui/skin_engine/skin_backdrops.c | |||
@@ -41,7 +41,6 @@ static struct skin_backdrop { | |||
41 | } backdrops[NB_BDROPS]; | 41 | } backdrops[NB_BDROPS]; |
42 | 42 | ||
43 | #define NB_BDROPS SKINNABLE_SCREENS_COUNT*NB_SCREENS | 43 | #define NB_BDROPS SKINNABLE_SCREENS_COUNT*NB_SCREENS |
44 | static int handle_being_loaded; | ||
45 | static int current_lcd_backdrop[NB_SCREENS]; | 44 | static int current_lcd_backdrop[NB_SCREENS]; |
46 | 45 | ||
47 | bool skin_backdrop_get_debug(int index, char **path, int *ref_count, size_t *size) | 46 | bool skin_backdrop_get_debug(int index, char **path, int *ref_count, size_t *size) |
@@ -65,8 +64,8 @@ bool skin_backdrop_get_debug(int index, char **path, int *ref_count, size_t *siz | |||
65 | 64 | ||
66 | static int buflib_move_callback(int handle, void* current, void* new) | 65 | static int buflib_move_callback(int handle, void* current, void* new) |
67 | { | 66 | { |
68 | if (handle == handle_being_loaded) | 67 | (void)handle; |
69 | return BUFLIB_CB_CANNOT_MOVE; | 68 | |
70 | for (int i=0; i<NB_BDROPS; i++) | 69 | for (int i=0; i<NB_BDROPS; i++) |
71 | { | 70 | { |
72 | if (backdrops[i].buffer == current) | 71 | if (backdrops[i].buffer == current) |
@@ -96,7 +95,6 @@ bool skin_backdrop_init(void) | |||
96 | } | 95 | } |
97 | FOR_NB_SCREENS(i) | 96 | FOR_NB_SCREENS(i) |
98 | current_lcd_backdrop[i] = -1; | 97 | current_lcd_backdrop[i] = -1; |
99 | handle_being_loaded = -1; | ||
100 | first_go = false; | 98 | first_go = false; |
101 | } | 99 | } |
102 | return go_status; | 100 | return go_status; |
@@ -182,16 +180,16 @@ bool skin_backdrops_preload(void) | |||
182 | backdrops[i].buffer = core_get_data(backdrops[i].buflib_handle); | 180 | backdrops[i].buffer = core_get_data(backdrops[i].buflib_handle); |
183 | if (strcmp(filename, BACKDROP_BUFFERNAME)) | 181 | if (strcmp(filename, BACKDROP_BUFFERNAME)) |
184 | { | 182 | { |
185 | handle_being_loaded = backdrops[i].buflib_handle; | 183 | core_pin(backdrops[i].buflib_handle); |
186 | backdrops[i].loaded = | 184 | backdrops[i].loaded = |
187 | screens[screen].backdrop_load(filename, backdrops[i].buffer); | 185 | screens[screen].backdrop_load(filename, backdrops[i].buffer); |
186 | core_unpin(backdrops[i].buflib_handle); | ||
188 | if (!backdrops[i].loaded) | 187 | if (!backdrops[i].loaded) |
189 | { | 188 | { |
190 | core_free(backdrops[i].buflib_handle); | 189 | core_free(backdrops[i].buflib_handle); |
191 | backdrops[i].buflib_handle = -1; | 190 | backdrops[i].buflib_handle = -1; |
192 | retval = false; | 191 | retval = false; |
193 | } | 192 | } |
194 | handle_being_loaded = -1; | ||
195 | } | 193 | } |
196 | else | 194 | else |
197 | backdrops[i].loaded = true; | 195 | backdrops[i].loaded = true; |
@@ -295,12 +293,12 @@ void skin_backdrop_load_setting(void) | |||
295 | return; | 293 | return; |
296 | } | 294 | } |
297 | bool loaded; | 295 | bool loaded; |
296 | core_pin(backdrops[i].buflib_handle); | ||
298 | backdrops[i].buffer = core_get_data(backdrops[i].buflib_handle); | 297 | backdrops[i].buffer = core_get_data(backdrops[i].buflib_handle); |
299 | handle_being_loaded = backdrops[i].buflib_handle; | ||
300 | loaded = screens[SCREEN_MAIN].backdrop_load( | 298 | loaded = screens[SCREEN_MAIN].backdrop_load( |
301 | global_settings.backdrop_file, | 299 | global_settings.backdrop_file, |
302 | backdrops[i].buffer); | 300 | backdrops[i].buffer); |
303 | handle_being_loaded = -1; | 301 | core_unpin(backdrops[i].buflib_handle); |
304 | backdrops[i].name[2] = loaded ? '.' : '\0'; | 302 | backdrops[i].name[2] = loaded ? '.' : '\0'; |
305 | backdrops[i].loaded = loaded; | 303 | backdrops[i].loaded = loaded; |
306 | return; | 304 | return; |