From: Jusung Son Date: Tue, 3 Mar 2020 00:42:13 +0000 (+0900) Subject: Fix base layer setting bug X-Git-Tag: accepted/tizen/unified/20200304.010536~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4d0cfabfd86b85db7405c10d54d2fb3d52d835b9;p=platform%2Fcore%2Fsystem%2Fbuxton2.git Fix base layer setting bug - If base layer is changed, normal layer should also be changed. Change-Id: Ie090d29a08cba83698bf7ceffa125831163ab34e Signed-off-by: Jusung Son --- diff --git a/common/direct.c b/common/direct.c index 525e7a2..cabc3a9 100644 --- a/common/direct.c +++ b/common/direct.c @@ -291,6 +291,7 @@ int direct_set(const struct buxton_layer *layer, const struct layer *ly; char *rp; char *wp; + struct buxton_layer unset_layer; if (!layer || !key || !*key || !val) { bxt_err("Invalid parameter"); @@ -306,6 +307,21 @@ int direct_set(const struct buxton_layer *layer, return r; r = set_val(ly, layer->uid, layer->type, key, rp, wp, val); + if (r != BUXTON_ERROR_NONE) { + free(rp); + free(wp); + return r; + } + + if (layer->type == LAYER_ATTRIBUTE_RO) { + r = set_val(ly, layer->uid, LAYER_ATTRIBUTE_RW, key, rp, wp, val); + if (r != BUXTON_ERROR_NONE) { + bxt_err("failed to set (%s: %s) %d", ly->name, key, r); + unset_layer = *layer; + unset_layer.type = LAYER_ATTRIBUTE_RO; + direct_unset(&unset_layer, key); + } + } free(rp); free(wp);