Revision: 17590
          http://sourceforge.net/p/edk2/code/17590
Author:   dandanbi
Date:     2015-06-09 05:09:50 +0000 (Tue, 09 Jun 2015)
Log Message:
-----------
EDKII:Display engine should not depend on the framework code

Display engine base on class opcode to detect whether in
front page.Now remove class/subclass and use FormsetGuid
or ClassGuid to judge whether in front page

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Dandan Bi <dandan...@intel.com>
Reviewed-by: Liming Gao <liming....@intel.com>

Modified Paths:
--------------
    trunk/edk2/IntelFrameworkModulePkg/Universal/BdsDxe/FrontPageVfr.Vfr
    
trunk/edk2/MdeModulePkg/Library/CustomizedDisplayLib/CustomizedDisplayLib.inf
    
trunk/edk2/MdeModulePkg/Library/CustomizedDisplayLib/CustomizedDisplayLibInternal.c
    trunk/edk2/MdeModulePkg/MdeModulePkg.dec
    trunk/edk2/MdeModulePkg/Universal/SetupBrowserDxe/IfrParse.c
    trunk/edk2/MdeModulePkg/Universal/SetupBrowserDxe/Presentation.c
    trunk/edk2/MdeModulePkg/Universal/SetupBrowserDxe/Setup.h

Modified: trunk/edk2/IntelFrameworkModulePkg/Universal/BdsDxe/FrontPageVfr.Vfr
===================================================================
--- trunk/edk2/IntelFrameworkModulePkg/Universal/BdsDxe/FrontPageVfr.Vfr        
2015-06-09 03:24:06 UTC (rev 17589)
+++ trunk/edk2/IntelFrameworkModulePkg/Universal/BdsDxe/FrontPageVfr.Vfr        
2015-06-09 05:09:50 UTC (rev 17590)
@@ -2,7 +2,7 @@
 //  
 //    Browser formset.
 //  
-//  Copyright (c) 2007 - 2011, Intel Corporation. All rights reserved.<BR>
+//  Copyright (c) 2007 - 2015, 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
@@ -41,8 +41,6 @@
   title    = STRING_TOKEN(STR_FRONT_PAGE_TITLE),
   help     = STRING_TOKEN(STR_NULL_STRING),
   classguid = FRONT_PAGE_FORMSET_GUID,
-  class    = FRONT_PAGE_CLASS,
-  subclass = FRONT_PAGE_SUBCLASS,
 
   form formid = FRONT_PAGE_FORM_ID,
        title  = STRING_TOKEN(STR_FRONT_PAGE_TITLE);

Modified: 
trunk/edk2/MdeModulePkg/Library/CustomizedDisplayLib/CustomizedDisplayLib.inf
===================================================================
--- 
trunk/edk2/MdeModulePkg/Library/CustomizedDisplayLib/CustomizedDisplayLib.inf   
    2015-06-09 03:24:06 UTC (rev 17589)
+++ 
trunk/edk2/MdeModulePkg/Library/CustomizedDisplayLib/CustomizedDisplayLib.inf   
    2015-06-09 05:09:50 UTC (rev 17590)
@@ -1,7 +1,7 @@
 ## @file
 # Customize display library used by display engine.
 #
-#  Copyright (c) 2013 - 2014, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2013 - 2015, 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
@@ -61,4 +61,5 @@
   gEfiMdeModulePkgTokenSpaceGuid.PcdBrowserSubtitleTextColor               ## 
CONSUMES
   gEfiMdeModulePkgTokenSpaceGuid.PcdBrowserFieldTextColor                  ## 
CONSUMES
   gEfiMdeModulePkgTokenSpaceGuid.PcdBrowserFieldTextHighlightColor         ## 
CONSUMES
-  gEfiMdeModulePkgTokenSpaceGuid.PcdBrowserFieldBackgroundHighlightColor   ## 
CONSUMES
\ No newline at end of file
+  gEfiMdeModulePkgTokenSpaceGuid.PcdBrowserFieldBackgroundHighlightColor   ## 
CONSUMES
+  gEfiMdeModulePkgTokenSpaceGuid.PcdFrontPageFormSetGuid                   ## 
CONSUMES
\ No newline at end of file

Modified: 
trunk/edk2/MdeModulePkg/Library/CustomizedDisplayLib/CustomizedDisplayLibInternal.c
===================================================================
--- 
trunk/edk2/MdeModulePkg/Library/CustomizedDisplayLib/CustomizedDisplayLibInternal.c
 2015-06-09 03:24:06 UTC (rev 17589)
+++ 
trunk/edk2/MdeModulePkg/Library/CustomizedDisplayLib/CustomizedDisplayLibInternal.c
 2015-06-09 05:09:50 UTC (rev 17590)
@@ -2,7 +2,7 @@
 
   This library class defines a set of interfaces to customize Display module
 
-Copyright (c) 2013, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2013-2015, 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 that accompanies this 
distribution.  
 The full text of the license may be found at
@@ -256,7 +256,32 @@
   IN  EFI_IFR_OP_HEADER         *OpCodeData
   )
 {
+  EFI_GUID *   ClassGuid;
+  UINT8        ClassGuidNum;
+
+  ClassGuid    = NULL;
+  ClassGuidNum = 0;
+
   switch (OpCodeData->OpCode) {
+    case EFI_IFR_FORM_SET_OP:
+      //
+      // process the statement outside of form,if it is formset op, get its 
formsetguid or classguid and compared with gFrontPageFormSetGuid
+      //
+      if (CompareGuid((EFI_GUID*)PcdGetPtr 
(PcdFrontPageFormSetGuid),(EFI_GUID*)&((EFI_IFR_FORM_SET *) OpCodeData)->Guid)){
+        gClassOfVfr = FORMSET_CLASS_FRONT_PAGE;
+      } else{
+        ClassGuidNum = (UINT8)(((EFI_IFR_FORM_SET *)OpCodeData)->Flags & 0x3);
+        ClassGuid    = (EFI_GUID *)(VOID *)((UINT8 *)OpCodeData + sizeof 
(EFI_IFR_FORM_SET));
+        while (ClassGuidNum-- > 0){
+          if (CompareGuid((EFI_GUID*)PcdGetPtr 
(PcdFrontPageFormSetGuid),ClassGuid)){
+            gClassOfVfr = FORMSET_CLASS_FRONT_PAGE;
+            break;
+          }
+          ClassGuid ++;
+        }
+      }
+      break;
+
     case EFI_IFR_GUID_OP:     
       if (CompareGuid (&gEfiIfrTianoGuid, (EFI_GUID *)((CHAR8*) OpCodeData + 
sizeof (EFI_IFR_OP_HEADER)))) {
         //

Modified: trunk/edk2/MdeModulePkg/MdeModulePkg.dec
===================================================================
--- trunk/edk2/MdeModulePkg/MdeModulePkg.dec    2015-06-09 03:24:06 UTC (rev 
17589)
+++ trunk/edk2/MdeModulePkg/MdeModulePkg.dec    2015-06-09 05:09:50 UTC (rev 
17590)
@@ -968,6 +968,10 @@
   gEfiMdeModulePkgTokenSpaceGuid.PcdSetupConOutRow|25|UINT32|0x4000000e
 
 [PcdsFixedAtBuild, PcdsPatchableInModule, PcdsDynamic, PcdsDynamicEx]
+  ## This PCD points to the front page formset GUID
+  #  Compare the FormsetGuid or ClassGuid with this PCD value can detect 
whether in front page
+  gEfiMdeModulePkgTokenSpaceGuid.PcdFrontPageFormSetGuid|{ 0xbc, 0x30, 0x0c, 
0x9e,0x06, 0x3f, 0xa6, 0x4b, 0x82, 0x88, 0x9, 0x17, 0x9b, 0x85, 0x5d, 0xbe 
}|VOID*|0x0001006e
+
   ## Base address of the NV variable range in flash device.
   # @Prompt Base address of flash NV variable range.
   
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase|0x0|UINT32|0x30000001

Modified: trunk/edk2/MdeModulePkg/Universal/SetupBrowserDxe/IfrParse.c
===================================================================
--- trunk/edk2/MdeModulePkg/Universal/SetupBrowserDxe/IfrParse.c        
2015-06-09 03:24:06 UTC (rev 17589)
+++ trunk/edk2/MdeModulePkg/Universal/SetupBrowserDxe/IfrParse.c        
2015-06-09 05:09:50 UTC (rev 17590)
@@ -1709,6 +1709,7 @@
 
       CopyMem (&FormSet->FormSetTitle, &((EFI_IFR_FORM_SET *) 
OpCodeData)->FormSetTitle, sizeof (EFI_STRING_ID));
       CopyMem (&FormSet->Help,         &((EFI_IFR_FORM_SET *) 
OpCodeData)->Help,         sizeof (EFI_STRING_ID));
+      FormSet->OpCode = (EFI_IFR_OP_HEADER *) OpCodeData;//save the opcode 
address of formset
 
       if (OpCodeLength > OFFSET_OF (EFI_IFR_FORM_SET, Flags)) {
         //

Modified: trunk/edk2/MdeModulePkg/Universal/SetupBrowserDxe/Presentation.c
===================================================================
--- trunk/edk2/MdeModulePkg/Universal/SetupBrowserDxe/Presentation.c    
2015-06-09 03:24:06 UTC (rev 17589)
+++ trunk/edk2/MdeModulePkg/Universal/SetupBrowserDxe/Presentation.c    
2015-06-09 05:09:50 UTC (rev 17590)
@@ -546,6 +546,21 @@
   }
 
   //
+  // treat formset as statement outside the form,get its opcode.
+  //
+  DisplayStatement = AllocateZeroPool (sizeof (FORM_DISPLAY_ENGINE_STATEMENT));
+  ASSERT (DisplayStatement != NULL);
+
+  DisplayStatement->Signature = FORM_DISPLAY_ENGINE_STATEMENT_SIGNATURE;
+  DisplayStatement->Version   = FORM_DISPLAY_ENGINE_STATEMENT_VERSION_1;
+  DisplayStatement->OpCode = gCurrentSelection->FormSet->OpCode;
+
+  InitializeListHead (&DisplayStatement->NestStatementList);
+  InitializeListHead (&DisplayStatement->OptionListHead);
+
+  InsertTailList(&gDisplayFormData.StatementListOSF, 
&DisplayStatement->DisplayLink);
+
+  //
   // Process the statement in this form.
   //
   Link = GetFirstNode (&gCurrentSelection->Form->StatementListHead);

Modified: trunk/edk2/MdeModulePkg/Universal/SetupBrowserDxe/Setup.h
===================================================================
--- trunk/edk2/MdeModulePkg/Universal/SetupBrowserDxe/Setup.h   2015-06-09 
03:24:06 UTC (rev 17589)
+++ trunk/edk2/MdeModulePkg/Universal/SetupBrowserDxe/Setup.h   2015-06-09 
05:09:50 UTC (rev 17590)
@@ -454,6 +454,7 @@
   UINT16                          Class;                // Tiano extended 
Class code
   UINT16                          SubClass;             // Tiano extended 
Subclass code
   EFI_IMAGE_ID                    ImageId;
+  EFI_IFR_OP_HEADER               *OpCode;              //mainly for formset 
op to get ClassGuid
 
   FORM_BROWSER_STATEMENT          *StatementBuffer;     // Buffer for all 
Statements and Questions
   EXPRESSION_OPCODE               *ExpressionBuffer;    // Buffer for all 
Expression OpCode


------------------------------------------------------------------------------
_______________________________________________
edk2-commits mailing list
edk2-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-commits

Reply via email to