VirtualBox

Changeset 79051 in vbox


Ignore:
Timestamp:
Jun 8, 2019 10:43:14 PM (6 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
131209
Message:

Main/AdditionsFacilityImpl: i_getName() shouldn't return a 'Utf8Str' object (copy) but 'const char *'. Can skip locking when accessing mType as it is static for the lifetime of the object. Some cleanups.

Location:
trunk/src/VBox/Main
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Main/include/AdditionsFacilityImpl.h

    r79050 r79051  
    5858    static const FacilityInfo s_aFacilityInfo[8];
    5959
    60     // public internal methods
     60    /** @name public internal methods
     61     * @{ */
    6162    static const AdditionsFacility::FacilityInfo &i_typeToInfo(AdditionsFacilityType_T aType);
     63    LONG64 i_getLastUpdated() const;
     64#if 0 /* unused */
     65    AdditionsFacilityType_T i_getType() const;
    6266    AdditionsFacilityClass_T i_getClass() const;
    63     LONG64 i_getLastUpdated() const;
    64     com::Utf8Str i_getName() const;
     67    const char *i_getName() const;
     68#endif
    6569    AdditionsFacilityStatus_T i_getStatus() const;
    66     AdditionsFacilityType_T i_getType() const;
    6770    bool i_update(AdditionsFacilityStatus_T a_enmStatus, uint32_t a_fFlags, PCRTTIMESPEC a_pTimeSpecTS);
     71    /** @} */
    6872
    6973private:
    7074
    71     // Wrapped IAdditionsFacility properties
     75    /** @name Wrapped IAdditionsFacility properties
     76     * @{ */
    7277    HRESULT getClassType(AdditionsFacilityClass_T *aClassType);
    7378    HRESULT getLastUpdated(LONG64 *aLastUpdated);
     
    7580    HRESULT getStatus(AdditionsFacilityStatus_T *aStatus);
    7681    HRESULT getType(AdditionsFacilityType_T *aType);
     82    /** @} */
    7783
    7884    /** A structure for keeping a facility status
  • trunk/src/VBox/Main/src-client/AdditionsFacilityImpl.cpp

    r79050 r79051  
    2626
    2727
     28/**
     29 * @note We assume that unknown is always the first entry!
     30 */
    2831/* static */
    2932const AdditionsFacility::FacilityInfo AdditionsFacility::s_aFacilityInfo[8] =
    3033{
    31     /* NOTE: We assume that unknown is always the first entry! */
    32     { "Unknown", AdditionsFacilityType_None, AdditionsFacilityClass_None },
    33     { "VirtualBox Base Driver", AdditionsFacilityType_VBoxGuestDriver, AdditionsFacilityClass_Driver },
    34     { "Auto Logon", AdditionsFacilityType_AutoLogon, AdditionsFacilityClass_Feature },
    35     { "VirtualBox System Service", AdditionsFacilityType_VBoxService, AdditionsFacilityClass_Service },
    36     { "VirtualBox Desktop Integration", AdditionsFacilityType_VBoxTrayClient, AdditionsFacilityClass_Program },
    37     { "Seamless Mode", AdditionsFacilityType_Seamless, AdditionsFacilityClass_Feature },
    38     { "Graphics Mode", AdditionsFacilityType_Graphics, AdditionsFacilityClass_Feature },
    39     { "Guest Monitor Attach", AdditionsFacilityType_MonitorAttach, AdditionsFacilityClass_Feature },
     34    { "Unknown",                        AdditionsFacilityType_None,             AdditionsFacilityClass_None },
     35    { "VirtualBox Base Driver",         AdditionsFacilityType_VBoxGuestDriver,  AdditionsFacilityClass_Driver },
     36    { "Auto Logon",                     AdditionsFacilityType_AutoLogon,        AdditionsFacilityClass_Feature },
     37    { "VirtualBox System Service",      AdditionsFacilityType_VBoxService,      AdditionsFacilityClass_Service },
     38    { "VirtualBox Desktop Integration", AdditionsFacilityType_VBoxTrayClient,   AdditionsFacilityClass_Program },
     39    { "Seamless Mode",                  AdditionsFacilityType_Seamless,         AdditionsFacilityClass_Feature },
     40    { "Graphics Mode",                  AdditionsFacilityType_Graphics,         AdditionsFacilityClass_Feature },
     41    { "Guest Monitor Attach",           AdditionsFacilityType_MonitorAttach,    AdditionsFacilityClass_Feature },
    4042};
    4143
     
    109111    LogFlowThisFuncEnter();
    110112
     113    /* mType is static, so no need to lock anything. */
     114    *aClassType = AdditionsFacility::i_typeToInfo(mData.mType).mClass;
     115    return S_OK;
     116}
     117
     118HRESULT AdditionsFacility::getName(com::Utf8Str &aName)
     119{
     120    LogFlowThisFuncEnter();
     121
     122    /* mType is static, so no need to lock anything. */
     123    int vrc = aName.assignNoThrow(AdditionsFacility::i_typeToInfo(mData.mType).mName);
     124    return RT_SUCCESS(vrc) ? S_OK : E_OUTOFMEMORY;
     125}
     126
     127HRESULT AdditionsFacility::getLastUpdated(LONG64 *aLastUpdated)
     128{
     129    LogFlowThisFuncEnter();
     130
    111131    AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
    112132
    113     *aClassType = i_getClass();
    114 
    115     return S_OK;
    116 }
    117 
    118 HRESULT AdditionsFacility::getName(com::Utf8Str &aName)
     133    *aLastUpdated = i_getLastUpdated();
     134
     135    return S_OK;
     136}
     137
     138HRESULT AdditionsFacility::getStatus(AdditionsFacilityStatus_T *aStatus)
    119139{
    120140    LogFlowThisFuncEnter();
     
    122142    AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
    123143
    124     aName = i_getName();
    125 
    126     return S_OK;
    127 }
    128 
    129 HRESULT AdditionsFacility::getLastUpdated(LONG64 *aLastUpdated)
    130 {
    131     LogFlowThisFuncEnter();
    132 
    133     AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
    134 
    135     *aLastUpdated = i_getLastUpdated();
    136 
    137     return S_OK;
    138 }
    139 
    140 HRESULT AdditionsFacility::getStatus(AdditionsFacilityStatus_T *aStatus)
    141 {
    142     LogFlowThisFuncEnter();
    143 
    144     AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
    145 
    146144    *aStatus = i_getStatus();
    147145
     
    153151    LogFlowThisFuncEnter();
    154152
    155     AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
    156 
    157     *aType = i_getType();
    158 
    159     return S_OK;
    160 }
    161 
    162 const AdditionsFacility::FacilityInfo &AdditionsFacility::i_typeToInfo(AdditionsFacilityType_T aType)
     153    /* mType is static, so no need to lock anything. */
     154    *aType = mData.mType;
     155    return S_OK;
     156}
     157
     158/*static*/ const AdditionsFacility::FacilityInfo &AdditionsFacility::i_typeToInfo(AdditionsFacilityType_T aType)
    163159{
    164160    for (size_t i = 0; i < RT_ELEMENTS(s_aFacilityInfo); ++i)
     
    170166}
    171167
     168#if 0 /* unused */
     169
     170AdditionsFacilityType_T AdditionsFacility::i_getType() const
     171{
     172    return mData.mType;
     173}
     174
    172175AdditionsFacilityClass_T AdditionsFacility::i_getClass() const
    173176{
     
    175178}
    176179
    177 com::Utf8Str AdditionsFacility::i_getName() const
     180const char *AdditionsFacility::i_getName() const
    178181{
    179182    return AdditionsFacility::i_typeToInfo(mData.mType).mName;
    180183}
     184
     185#endif
    181186
    182187LONG64 AdditionsFacility::i_getLastUpdated() const
     
    196201    AssertMsgFailed(("Unknown status of facility!\n"));
    197202    return AdditionsFacilityStatus_Unknown; /* Should never happen! */
    198 }
    199 
    200 AdditionsFacilityType_T AdditionsFacility::i_getType() const
    201 {
    202     return mData.mType;
    203203}
    204204
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette