SL-13507 Viewer should log resolution of all associated displays

master
Mnikolenko Productengine 2020-07-17 20:28:02 +03:00
parent 2c93c14c9d
commit 44906ac0d4
5 changed files with 59 additions and 0 deletions

View File

@ -263,6 +263,16 @@ std::vector<std::string> LLWindow::getDynamicFallbackFontList()
#endif
}
// static
std::vector<std::string> LLWindow::getDisplaysResolutionList()
{
#if LL_WINDOWS
return LLWindowWin32::getDisplaysResolutionList();
#else
return std::vector<std::string>();
#endif
}
#define UTF16_IS_HIGH_SURROGATE(U) ((U16)((U) - 0xD800) < 0x0400)
#define UTF16_IS_LOW_SURROGATE(U) ((U16)((U) - 0xDC00) < 0x0400)
#define UTF16_SURROGATE_PAIR_TO_UTF32(H,L) (((H) << 10) + (L) - (0xD800 << 10) - 0xDC00 + 0x00010000)

View File

@ -168,6 +168,9 @@ public:
// Get system UI size based on DPI (for 96 DPI UI size should be 1.0)
virtual F32 getSystemUISize() { return 1.0; }
static std::vector<std::string> getDisplaysResolutionList();
protected:
LLWindow(LLWindowCallbacks* callbacks, BOOL fullscreen, U32 flags);
virtual ~LLWindow();

View File

@ -400,6 +400,39 @@ LLWinImm::~LLWinImm()
}
class LLMonitorInfo
{
public:
std::vector<std::string> getResolutionsList() { return mResList; }
LLMonitorInfo()
{
EnumDisplayMonitors(0, 0, MonitorEnum, (LPARAM)this);
}
private:
static BOOL CALLBACK MonitorEnum(HMONITOR hMon, HDC hdc, LPRECT lprcMonitor, LPARAM pData)
{
int monitor_width = lprcMonitor->right - lprcMonitor->left;
int monitor_height = lprcMonitor->bottom - lprcMonitor->top;
std::ostringstream sstream;
sstream << monitor_width << "x" << monitor_height;;
std::string res = sstream.str();
LLMonitorInfo* pThis = reinterpret_cast<LLMonitorInfo*>(pData);
pThis->mResList.push_back(res);
return TRUE;
}
std::vector<std::string> mResList;
};
static LLMonitorInfo sMonitorInfo;
LLWindowWin32::LLWindowWin32(LLWindowCallbacks* callbacks,
const std::string& title, const std::string& name, S32 x, S32 y, S32 width,
S32 height, U32 flags,
@ -4218,6 +4251,12 @@ F32 LLWindowWin32::getSystemUISize()
return scale_value;
}
//static
std::vector<std::string> LLWindowWin32::getDisplaysResolutionList()
{
return sMonitorInfo.getResolutionsList();
}
//static
std::vector<std::string> LLWindowWin32::getDynamicFallbackFontList()
{

View File

@ -114,6 +114,7 @@ public:
LLWindowCallbacks::DragNDropResult completeDragNDropRequest( const LLCoordGL gl_coord, const MASK mask, LLWindowCallbacks::DragNDropAction action, const std::string url );
static std::vector<std::string> getDisplaysResolutionList();
static std::vector<std::string> getDynamicFallbackFontList();
static void setDPIAwareness();
protected:

View File

@ -3490,6 +3490,12 @@ void LLAppViewer::writeSystemInfo()
gDebugInfo["FirstRunThisInstall"] = gSavedSettings.getBOOL("FirstRunThisInstall");
gDebugInfo["StartupState"] = LLStartUp::getStartupStateString();
std::vector<std::string> resolutions = gViewerWindow->getWindow()->getDisplaysResolutionList();
for (auto res_iter : resolutions)
{
gDebugInfo["DisplayInfo"].append(res_iter);
}
writeDebugInfo(); // Save out debug_info.log early, in case of crash.
}