Browse Source

Merge pull request #323 from cuu/master

add GlobalScale
GNU 4 years ago
parent
commit
661250f7b1
5 changed files with 37 additions and 11 deletions
  1. 2 2
      sys.py/UI/main_screen.py
  2. 1 1
      sys.py/UI/page.py
  3. 8 0
      sys.py/UI/util_funcs.py
  4. 19 3
      sys.py/config.py
  5. 7 5
      sys.py/run.py

+ 2 - 2
sys.py/UI/main_screen.py

@@ -20,7 +20,7 @@ from page        import Page,PageStack
 from title_bar   import TitleBar
 from foot_bar    import FootBar
 from constants   import Width,Height
-from util_funcs  import midRect,FileExists,ReplaceSuffix,ReadTheFileContent,CmdClean,MakeExecutable
+from util_funcs  import midRect,FileExists,ReplaceSuffix,ReadTheFileContent,CmdClean,MakeExecutable,SwapAndShow
 from keys_def    import CurKeys
 from label       import Label
 from untitled_icon import UntitledIcon
@@ -361,7 +361,7 @@ class MainScreen(Widget):
             return
         if self._HWND != None:
             self._HWND.blit(self._CanvasHWND,(self._PosX,self._PosY,self._Width,self._Height))
-            pygame.display.update()
+            SwapAndShow()
             
     def ExtraName(self,name):
         ## extra name like 1_xxx to be => xxx, 

+ 1 - 1
sys.py/UI/page.py

@@ -106,7 +106,7 @@ class Page(Widget):
     _FootMsg = ["Nav", "", "", "", "Enter"]  # Default Page Foot info
     _Wallpaper = None
     _SelectedIconTopOffset = 20
-    _EasingDur = 30
+    _EasingDur = 20/config.GlobalScale
     _Padding = pygame.Rect(0, 0, 0, 0)  # x,y,w,h
     _Margin = pygame.Rect(0, 0, 0, 0)
     _ScrollStep = 1

+ 8 - 0
sys.py/UI/util_funcs.py

@@ -12,6 +12,7 @@ import subprocess
 import string
 from Xlib import X,display
 import config
+from constants   import Width,Height
 
 def get_git_revision_hash():
     return subprocess.check_output(['git', 'rev-parse', 'HEAD'])
@@ -109,6 +110,13 @@ def DrawText(canvas,text, x,y,width,height,canWidth,canHeight,fontObj):# text fo
 
 
 def SwapAndShow():
+    screen = pygame.display.get_surface()
+    if config.GlobalScale > 1:
+        pygame.transform.scale(config.GlobalCanvas,(Width*config.GlobalScale,Height*config.GlobalScale),config.GlobalCanvas2)
+        screen.blit(config.GlobalCanvas2,(0,0,Width*config.GlobalScale,Height*config.GlobalScale))
+    elif config.GlobalScale == 1:
+        screen.blit(config.GlobalCanvas,(0,0,Width,Height))
+        
     pygame.display.update()
 
 def ArmSystem(cmd):

+ 19 - 3
sys.py/config.py

@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*- 
 import os
 import platform
-from UI.util_funcs   import FileExists,ArmSystem
+from UI.util_funcs   import FileExists,ArmSystem,ReadTheFileContent
 from pyaria2_rpc.pyaria2 import Xmlrpc
 
 CurKeySet = "GameShell" ## >>>    PC or GameShell   <<<
@@ -10,6 +10,7 @@ DontLeave = False
 
 BackLight = "/proc/driver/backlight"
 Battery   = "/sys/class/power_supply/axp20x-battery/uevent"
+FB_Modes  = "/sys/class/graphics/fb0/modes"
 
 MPD_socket = "/tmp/mpd.socket"
 
@@ -32,8 +33,12 @@ PowerLevels["balance_saving"] = [40,0,0]
 
 PowerLevel = "balance_saving"
 
+GlobalCanvas=None
+GlobalCanvas2=None
+GlobalScale = 1
+
 def PreparationInAdv():
-    global SKIN,ButtonsLayout
+    global SKIN,ButtonsLayout,FB_Modes,GlobalScale
     global PowerLevel
     global RPC 
     if SKIN != None:
@@ -73,7 +78,18 @@ def PreparationInAdv():
     else:
         ArmSystem("sudo iw wlan0 set power_save off >/dev/null")
     
-    RPC = Xmlrpc('localhost', 6800) 
+    if FileExists(FB_Modes):
+        modes = ReadTheFileContent(FB_Modes)
+        if "320x240" in modes:
+            GlobalScale = 1
+        if "640x480" in modes:
+            GlobalScale = 2
+        if "480x640" in modes:
+            GlobalScale = 2
+    else:
+        GlobalScale = 1
+    
+    RPC = Xmlrpc('localhost', 6800)
 PreparationInAdv()
 ##sys.py/.powerlevel
 

+ 7 - 5
sys.py/run.py

@@ -585,7 +585,7 @@ def socket_thread(main_screen):
                                   main_screen._TitleBar.Redraw()
                     
 
-def big_loop():
+def big_loop(screen):
     global sound_patch,gobject_flash_led1
     
     title_bar = TitleBar()
@@ -639,8 +639,8 @@ if __name__ == '__main__':
     
     os.chdir( os.path.dirname(os.path.realpath(__file__)) )
     
-    SCREEN_SIZE = (Width,Height)
-    screen = pygame.display.set_mode(SCREEN_SIZE, 0, 32)
+    SCREEN_SIZE = (Width*config.GlobalScale,Height*config.GlobalScale)
+    screen = pygame.display.set_mode(SCREEN_SIZE,pygame.DOUBLEBUF | pygame.HWSURFACE, 32)
 
     pygame.event.set_allowed(None) 
     pygame.event.set_allowed([pygame.KEYDOWN,pygame.KEYUP,RUNEVT,RUNSYS,POWEROPT,RESTARTUI,RUNSH])
@@ -662,10 +662,12 @@ if __name__ == '__main__':
         print("This pygame does not support PNG")
         exit()
 
+    config.GlobalCanvas = pygame.Surface((Width,Height),0,32)
+    config.GlobalCanvas2 = pygame.Surface(SCREEN_SIZE ,0,32)
     
     crt_screen = CreateByScreen()
     crt_screen.Init()
-    crt_screen._HWND = screen 
+    crt_screen._HWND = config.GlobalCanvas
     
-    big_loop()
+    big_loop(config.GlobalCanvas)