diff options
| -rw-r--r-- | indra/llcommon/llsys.cpp | 28 | ||||
| -rw-r--r-- | indra/llcommon/llsys.h | 15 | ||||
| -rw-r--r-- | indra/newview/llappviewer.cpp | 32 | 
3 files changed, 71 insertions, 4 deletions
| diff --git a/indra/llcommon/llsys.cpp b/indra/llcommon/llsys.cpp index 0272c55db2..cb91a54f11 100644 --- a/indra/llcommon/llsys.cpp +++ b/indra/llcommon/llsys.cpp @@ -775,6 +775,34 @@ void LLMemoryInfo::stream(std::ostream& s) const  #endif  } +S32 LLDisplayInfo::getDisplayWidth() const +{ +#if LL_WINDOWS +	return  ::GetSystemMetrics(SM_CXVIRTUALSCREEN); +#elif LL_DARWIN +	return 1024; //*FIXME +#elif LL_SOLARIS +	return 1024; //*FIXME +else +	return 1024; //*FIXME +#endif +} + +S32 LLDisplayInfo::getDisplayHeight() const +{ +#if LL_WINDOWS +	return  ::GetSystemMetrics(SM_CYVIRTUALSCREEN); +#elif LL_DARWIN +	return 768; //*FIXME +#elif LL_SOLARIS +	return 768; //*FIXME +#else +	return 768; //*FIXME +#endif +	 +} + +  std::ostream& operator<<(std::ostream& s, const LLOSInfo& info)  {  	info.stream(s); diff --git a/indra/llcommon/llsys.h b/indra/llcommon/llsys.h index c2c45bec9a..aa3fdd485b 100644 --- a/indra/llcommon/llsys.h +++ b/indra/llcommon/llsys.h @@ -122,6 +122,21 @@ public:  	U32 getPhysicalMemoryClamped() const; ///< Memory size in clamped bytes  }; +//============================================================================= +// +//	CLASS		LLDisplayInfo +class LL_COMMON_API LLDisplayInfo + +/*!	@brief		Class to query the information about some display settings +*/ +{ +public: +	LLDisplayInfo(){}; ///< Default constructor + +	S32 getDisplayWidth() const; ///< display width +	S32 getDisplayHeight() const; ///< display height +	 +};  LL_COMMON_API std::ostream& operator<<(std::ostream& s, const LLOSInfo& info);  LL_COMMON_API std::ostream& operator<<(std::ostream& s, const LLCPUInfo& info); diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 948d38befb..6d4c90c2b9 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -304,7 +304,8 @@ static std::string gLaunchFileOnQuit;  // Used on Win32 for other apps to identify our window (eg, win_setup)  const char* const VIEWER_WINDOW_CLASSNAME = "Second Life"; - +static const S32 FIRST_RUN_WINDOW_WIDTH = 1024; +static const S32 FIRST_RUN_WINDOW_HRIGHT = 768;  //----------------------------------------------------------------------------  // List of entries from strings.xml to always replace @@ -2362,12 +2363,35 @@ bool LLAppViewer::initWindow()  	// store setting in a global for easy access and modification  	gNoRender = gSavedSettings.getBOOL("DisableRendering"); +	S32 window_x = gSavedSettings.getS32("WindowX"); +	S32 window_y = gSavedSettings.getS32("WindowY"); +	S32 window_width = gSavedSettings.getS32("WindowWidth"); +	S32 window_height = gSavedSettings.getS32("WindowHeight"); + +	bool show_maximized = gSavedSettings.getBOOL("WindowMaximized"); + +	bool first_run = gSavedSettings.getBOOL("FirstLoginThisInstall"); + +	if (first_run)//for first login  +	{ +		window_width = FIRST_RUN_WINDOW_WIDTH;//yep hardcoded +		window_height = FIRST_RUN_WINDOW_HRIGHT; +		 +		//if screen resolution is lower then 1024*768 then show maximized +		LLDisplayInfo display_info; +		if(display_info.getDisplayWidth() <= FIRST_RUN_WINDOW_WIDTH +			|| display_info.getDisplayHeight()<=FIRST_RUN_WINDOW_HRIGHT) +		{ +			show_maximized = true; +		} +	} +  	// always start windowed  	BOOL ignorePixelDepth = gSavedSettings.getBOOL("IgnorePixelDepth");  	gViewerWindow = new LLViewerWindow(gWindowTitle,   		VIEWER_WINDOW_CLASSNAME, -		gSavedSettings.getS32("WindowX"), gSavedSettings.getS32("WindowY"), -		gSavedSettings.getS32("WindowWidth"), gSavedSettings.getS32("WindowHeight"), +		window_x, window_y, +		window_width, window_height,  		FALSE, ignorePixelDepth);  	LLNotificationsUI::LLNotificationManager::getInstance(); @@ -2378,7 +2402,7 @@ bool LLAppViewer::initWindow()  		gViewerWindow->toggleFullscreen(FALSE);  	} -	if (gSavedSettings.getBOOL("WindowMaximized")) +	if (show_maximized)  	{  		gViewerWindow->mWindow->maximize();  		gViewerWindow->getWindow()->setNativeAspectRatio(gSavedSettings.getF32("FullScreenAspectRatio")); | 
