VirtualBox

Changeset 106900 in vbox for trunk/src/VBox/Main


Ignore:
Timestamp:
Nov 8, 2024 10:45:15 PM (4 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
165821
Message:

Main/ObjectsTracker.h/cpp: Build fix - the extpack solaris VM doesn't have std::unordered_map, so we have to use std::map or something else. Fixed atomic fFinish handling. jiraref:VBP-1187

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

Legend:

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

    r106891 r106900  
    3333
    3434#include <set>
    35 #include <unordered_map>
     35#include <map>
    3636#include <vector>
    3737#include <string>
     
    150150};
    151151
     152/** The string representation for object IDs in the internal map.
     153 * @todo r=bird: Why are you using std::string here? We use
     154 *       should use com::Utf8Str where possible. In this case, though, it's a
     155 *       com::Guid which would have much more efficient storage compared
     156 *       to both the string variants... */
     157#if 1
     158typedef std::string ObjIdString_T;
     159#else
     160typedef com::Utf8Str ObjIdString_T;
     161#endif
     162
    152163/////////////////////////////////////////////////////////////////////////////
    153164// TrackedObjectsCollector
    154 /////////////////////////////////////////////////////////////////////////////
     165///////////////////////////////////////////////////////////////////////////// 
    155166class TrackedObjectsCollector
    156167{
     
    160171    std::set<com::Utf8Str> m_trackedObjectIds;//Full list of valid + invalid objects
    161172    std::set<com::Utf8Str> m_trackedInvalidObjectIds;//List of invalid objects only
    162     std::unordered_map<std::string, TrackedObjectData> m_trackedObjectsData;//Mapping Object Id -> Object Data
     173    std::map<ObjIdString_T, TrackedObjectData> m_trackedObjectsData;//Mapping Object Id -> Object Data
    163174
    164175    uint64_t m_Added;//Counter of the added objects
  • trunk/src/VBox/Main/src-all/ObjectsTracker.cpp

    r106891 r106900  
    3434#include <iprt/stream.h>
    3535#include <iprt/time.h>
    36 # include <iprt/asm.h>
    37 
    38 typedef std::unordered_map<std::string, TrackedObjectData>::const_iterator cIterTrObjDataType;
    39 typedef std::unordered_map<std::string, TrackedObjectData>::iterator iterTrObjDataType;
     36#include <iprt/asm.h>
     37
     38typedef std::map<ObjIdString_T, TrackedObjectData>::const_iterator cIterTrObjDataType;
     39typedef std::map<ObjIdString_T, TrackedObjectData>::iterator iterTrObjDataType;
    4040
    4141/////////////////////////////////////////////////////////////////////////////
     
    329329    RTCritSectEnter(&m_CritSectData);
    330330
    331     std::string sTemp(aObjId.c_str());
     331    ObjIdString_T sTemp(aObjId.c_str());
    332332    HRESULT hrc = E_FAIL;
    333333
     
    383383    RTCritSectEnter(&m_CritSectData);
    384384
    385     std::string sTemp(aObjId.c_str());
     385    ObjIdString_T sTemp(aObjId.c_str());
    386386
    387387    iterTrObjDataType pIter = m_trackedObjectsData.find(sTemp);
     
    412412        return VBOX_E_INVALID_OBJECT_STATE;
    413413
    414     std::string sTemp(aObjId.c_str());
     414    ObjIdString_T sTemp(aObjId.c_str());
    415415
    416416    vrc = VERR_NOT_FOUND;
     
    498498                                                        std::vector<com::Utf8Str>& aObjIdMap) const
    499499{
    500     for (const std::pair<const std::string, TrackedObjectData>& item : m_trackedObjectsData)
     500    for (const std::pair<const ObjIdString_T, TrackedObjectData> &item : m_trackedObjectsData)
    501501    {
    502502        /* IID found and the object is valid */
     
    655655    RTCritSectEnter(&m_CritSectData);
    656656
    657     std::string sTemp(aObjId.c_str());
     657    ObjIdString_T sTemp(aObjId.c_str());
    658658    vrc = VERR_NOT_FOUND;
    659659
     
    697697    LogFlowFuncEnter();
    698698    ASMAtomicWriteBool(&fFinish, true);
    699     return fFinish;
     699    return true;
    700700}
    701701
     
    703703{
    704704    LogFlowFuncEnter();
    705     ASMAtomicReadBool(&fFinish);
    706     return fFinish;
     705    return ASMAtomicReadBool(&fFinish);
    707706}
    708707
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