tdf#90794 Fix the Linux HiDPI start screen

Change-Id: I2553cf69d6968865dc6011c73a0d2c0e7519b7a8
Reviewed-on: https://gerrit.libreoffice.org/32018
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
This commit is contained in:
Abhilash Singh
2016-12-14 22:18:44 +05:30
committed by Caolán McNamara
parent 8cc747ad51
commit f424c8f053
2 changed files with 45 additions and 5 deletions

View File

@@ -531,6 +531,32 @@ static rtl_String* ustr_to_str( rtl_uString* pStr )
return pOut;
}
static sal_Bool getScreenSize(int* display_width, int* display_height)
{
Display* bDisplay = NULL;
Screen* bScreen = NULL;
bDisplay = XOpenDisplay( NULL );
if ( !bDisplay )
{
fprintf( stderr, "Failed to open default display.\n" );
return sal_False;
}
bScreen = DefaultScreenOfDisplay( bDisplay );
if ( !bScreen )
{
fprintf( stderr, "Failed to obtain the default screen of given display.\n" );
return sal_False;
}
*display_width = bScreen->width;
*display_height = bScreen->height;
XCloseDisplay( bDisplay );
return sal_True;
}
#define IMG_SUFFIX ".png"
static void splash_load_image( struct splash* splash, rtl_uString* pUAppPath )
@@ -540,7 +566,7 @@ static void splash_load_image( struct splash* splash, rtl_uString* pUAppPath )
* now the splash screen will have to get along with language-territory. */
char *pBuffer, *pSuffix, *pLocale;
int nLocSize;
int nLocSize, display_width, display_height;
rtl_Locale *pLoc = NULL;
rtl_String *pLang, *pCountry, *pAppPath;
@@ -570,9 +596,24 @@ static void splash_load_image( struct splash* splash, rtl_uString* pUAppPath )
if ( splash_load_bmp( splash, pBuffer ) )
goto cleanup;
strcpy (pSuffix, "intro" IMG_SUFFIX);
if ( splash_load_bmp( splash, pBuffer ) )
goto cleanup;
if ( getScreenSize( &display_width, &display_height ) == sal_True )
{
//load high resolution splash image
if ( display_width > 1920 && display_height > 1024 ) // suggest better display size limits?
{
//TODO- change progress bar parameters after getting size of intro-highres.png
strcpy (pSuffix, "intro-highres" IMG_SUFFIX);
if ( splash_load_bmp( splash, pBuffer ) )
goto cleanup;
}
//load low resolution splash image
else
{
strcpy (pSuffix, "intro" IMG_SUFFIX);
if ( splash_load_bmp( splash, pBuffer ) )
goto cleanup;
}
}
fprintf (stderr, "Failed to find intro image\n");

View File

@@ -9,7 +9,6 @@
#ifndef INCLUDED_DESKTOP_UNX_SOURCE_SPLASHX_H
#define INCLUDED_DESKTOP_UNX_SOURCE_SPLASHX_H
#include <rtl/ustring.h>
#ifdef __cplusplus