Reviewed-by: Eric Dong <[email protected]> > -----Original Message----- > From: Bi, Dandan > Sent: Friday, October 28, 2016 10:33 AM > To: [email protected] > Cc: Dong, Eric > Subject: [patch] IntelFrameworkModulePkg/BootMaint: Show "Change Boot order" > page correctly > > Some boot options may be deleted in the "Delete Boot Option page", > But the data BootOptionOrder in BmmFakeNvData may not be updated. > So when user enter the "Change Boot Order" page, we should not always > get the BootOptionOrder in BmmFakeNvData, it will result in incorrect > UI behaviors. When the Boot Options have been saved, > we should get the BootOptionOrder through function GetBootOrder. > > For driver option codes need to do the same change. > > This patch is to fix the issue in bugzilla: > https://bugzilla.tianocore.org/show_bug.cgi?id=39 > > Cc: Eric Dong <[email protected]> > Contributed-under: TianoCore Contribution Agreement 1.0 > Signed-off-by: Dandan Bi <[email protected]> > --- > .../Universal/BdsDxe/BootMaint/UpdatePage.c | 22 > +++++++++++++++++++--- > 1 file changed, 19 insertions(+), 3 deletions(-) > > diff --git a/IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/UpdatePage.c > b/IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/UpdatePage.c > index b13ed11..b7fee3a 100644 > --- a/IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/UpdatePage.c > +++ b/IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/UpdatePage.c > @@ -1,9 +1,9 @@ > /** @file > Dynamically update the pages. > > -Copyright (c) 2004 - 2015, Intel Corporation. All rights reserved.<BR> > +Copyright (c) 2004 - 2016, Intel Corporation. All rights reserved.<BR> > This program and the accompanying materials > are licensed and made available under the terms and conditions of the BSD > License > which accompanies this distribution. The full text of the license may be > found at > http://opensource.org/licenses/bsd-license.php > > @@ -557,18 +557,34 @@ UpdateOrderPage ( > QuestionId = 0; > VarOffset = 0; > switch (UpdatePageId) { > > case FORM_BOOT_CHG_ID: > - //GetBootOrder (CallbackData); > + // > + // If the BootOptionOrder in the BmmFakeNvData are same with the date in > the BmmOldFakeNVData, > + // means all Boot Options has been save in BootOptionMenu, we can get > the date from the menu. > + // else means browser maintains some uncommitted date which are not > saved in BootOptionMenu, > + // so we should not get the data from BootOptionMenu to show it. > + // > + if (CompareMem (CallbackData->BmmFakeNvData.BootOptionOrder, > CallbackData->BmmOldFakeNVData.BootOptionOrder, sizeof > (CallbackData->BmmFakeNvData.BootOptionOrder)) == 0) { > + GetBootOrder (CallbackData); > + } > OptionOrder = CallbackData->BmmFakeNvData.BootOptionOrder; > QuestionId = BOOT_OPTION_ORDER_QUESTION_ID; > VarOffset = BOOT_OPTION_ORDER_VAR_OFFSET; > break; > > case FORM_DRV_CHG_ID: > - //GetDriverOrder (CallbackData); > + // > + // If the DriverOptionOrder in the BmmFakeNvData are same with the date > in the BmmOldFakeNVData, > + // means all Driver Options has been save in DriverOptionMenu, we can > get the DriverOptionOrder from the menu. > + // else means browser maintains some uncommitted date which are not > saved in DriverOptionMenu, > + // so we should not get the data from DriverOptionMenu to show it. > + // > + if (CompareMem (CallbackData->BmmFakeNvData.DriverOptionOrder, > CallbackData->BmmOldFakeNVData.DriverOptionOrder, > sizeof (CallbackData->BmmFakeNvData.DriverOptionOrder)) == 0) { > + GetDriverOrder (CallbackData); > + } > OptionOrder = CallbackData->BmmFakeNvData.DriverOptionOrder; > QuestionId = DRIVER_OPTION_ORDER_QUESTION_ID; > VarOffset = DRIVER_OPTION_ORDER_VAR_OFFSET; > break; > } > -- > 1.9.5.msysgit.1
_______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

