summaryrefslogtreecommitdiff
path: root/desktop/unx/source/splashx.c
diff options
context:
space:
mode:
authorAbhilash Singh <abhilash300singh@gmail.com>2016-12-14 22:18:44 +0530
committerCaolán McNamara <caolanm@redhat.com>2017-01-13 12:45:01 +0000
commitf424c8f053797bc9d559865f52822d9cbf33ae3f (patch)
tree0b700ead2c477d13ef61a5c7f9c6d8c054dced07 /desktop/unx/source/splashx.c
parent8cc747ad519ea203df4d77551b1b8c4d626a5618 (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>
Diffstat (limited to 'desktop/unx/source/splashx.c')
-rw-r--r--desktop/unx/source/splashx.c49
1 files changed, 45 insertions, 4 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");