diff options
| author | Chris Forbes <chrisforbes@google.com> | 2016-04-07 09:04:49 +1200 |
|---|---|---|
| committer | Jon Ashburn <jon@lunarg.com> | 2016-04-07 10:43:35 -0600 |
| commit | f2c4f23432f913c332be793dc776a1810ed688b7 (patch) | |
| tree | 1b46c9d0c3bb004947cf41be17f70417a8af7328 /loader/loader.c | |
| parent | dd2e70c0799b302bc07b86f759afe9c0aaeda941 (diff) | |
| download | usermoji-f2c4f23432f913c332be793dc776a1810ed688b7.tar.xz | |
loader: Preserve order during layer list expansion
As requested by Jon -- instead of appending the expanded layers, insert
them in place of the meta layer.
Signed-off-by: Chris Forbes <chrisforbes@google.com>
Diffstat (limited to 'loader/loader.c')
| -rw-r--r-- | loader/loader.c | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/loader/loader.c b/loader/loader.c index c81aeab0..687b1b9f 100644 --- a/loader/loader.c +++ b/loader/loader.c @@ -1728,8 +1728,9 @@ static bool loader_find_layer_name_array( * layer key_name. * If not found then simply returns updating nothing. * Otherwise, it uses expand_count, expand_names adding them to layer names. - * Any duplicate (pre-existing) exapand_names in layer names are removed. - * Expand names are added to the back/end of the list of layer names. + * Any duplicate (pre-existing) expand_names in layer names are removed. + * Order is otherwise preserved, with the layer key_name being replaced by the + * expand_names. * @param inst * @param layer_count * @param ppp_layer_names @@ -1757,17 +1758,20 @@ void loader_expand_layer_names( // expand_names. uint32_t src_index, dst_index = 0; for (src_index = 0; src_index < *layer_count; src_index++) { - if (loader_find_layer_name_array(pp_src_layers[src_index], expand_count, expand_names) || - !strcmp(pp_src_layers[src_index], key_name)) { + if (loader_find_layer_name_array(pp_src_layers[src_index], expand_count, expand_names)) { continue; } - pp_dst_layers[dst_index++] = pp_src_layers[src_index]; - } + if (!strcmp(pp_src_layers[src_index], key_name)) { + // insert all expand_names in place of key_name + uint32_t expand_index; + for (expand_index = 0; expand_index < expand_count; expand_index++) { + pp_dst_layers[dst_index++] = expand_names[expand_index]; + } + continue; + } - // append expand_names. - for (src_index = 0; src_index < expand_count; src_index++) { - pp_dst_layers[dst_index++] = expand_names[src_index]; + pp_dst_layers[dst_index++] = pp_src_layers[src_index]; } *ppp_layer_names = pp_dst_layers; |
