diff options
author | Abhilash Singh <abhilash300singh@gmail.com> | 2016-12-14 22:18:44 +0530 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2017-01-13 12:45:01 +0000 |
commit | f424c8f053797bc9d559865f52822d9cbf33ae3f (patch) | |
tree | 0b700ead2c477d13ef61a5c7f9c6d8c054dced07 | |
parent | 8cc747ad519ea203df4d77551b1b8c4d626a5618 (diff) |
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>
-rw-r--r-- | desktop/unx/source/splashx.c | 49 | ||||
-rw-r--r-- | desktop/unx/source/splashx.h | 1 |
2 files changed, 45 insertions, 5 deletions
diff --git a/desktop/unx/source/splashx.c b/desktop/unx/source/splashx.c index d227ff5690a0..c4740993cd50 100644 --- a/desktop/unx/source/splashx.c +++ b/desktop/unx/source/splashx.c @@ -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"); diff --git a/desktop/unx/source/splashx.h b/desktop/unx/source/splashx.h index a74be00ed5e7..4e9c72c1897d 100644 --- a/desktop/unx/source/splashx.h +++ b/desktop/unx/source/splashx.h @@ -9,7 +9,6 @@ #ifndef INCLUDED_DESKTOP_UNX_SOURCE_SPLASHX_H #define INCLUDED_DESKTOP_UNX_SOURCE_SPLASHX_H - #include <rtl/ustring.h> #ifdef __cplusplus |