Ticket #565: sugar-emulator-fullscreen.patch

File sugar-emulator-fullscreen.patch, 3.2 KB (added by sascha_silbe, 15 years ago)

Patch to add fullscreen option to sugar-emulator

  • bin/sugar-emulator

    diff --git a/bin/sugar-emulator b/bin/sugar-emulator
    index 8c0aa8e..80b03ec 100644
    a b import gobject 
    2626
    2727from sugar import env
    2828
    29 def _run_xephyr(display, dpi, dimensions):
     29default_dimensions = (1200, 900) # XO-1 screen size
     30def _run_xephyr(display, dpi, dimensions, fullscreen):
    3031    cmd = [ 'Xephyr' ]
    3132    cmd.append(':%d' % display)
    3233    cmd.append('-ac')
    3334
    34     if dimensions is not None:
    35         cmd.append('-screen')
    36         cmd.append(dimensions)
    37     elif gtk.gdk.screen_width() < 1200 or gtk.gdk.screen_height() < 900:
     35    screen_size = (gtk.gdk.screen_width(), gtk.gdk.screen_height())
     36
     37    if (not dimensions) and (fullscreen is None) and \
     38       (screen_size < default_dimensions) :
     39        # no forced settings, screen too small => fit screen
     40        fullscreen = True
     41    elif (not dimensions) :
     42        # screen is big enough or user has en/disabled fullscreen manually
     43        # => use default size (will get ignored for fullscreen)
     44        dimensions = '%dx%d' % default_dimensions
     45
     46    if not dpi :
     47        dpi = gtk.settings_get_default().get_property('gtk-xft-dpi') / 1024
     48
     49    if fullscreen :
    3850        cmd.append('-fullscreen')
    39     else:
     51
     52    if dimensions :
    4053        cmd.append('-screen')
    41         cmd.append('%dx%d' % (1200, 900))
     54        cmd.append(dimensions)
    4255
    43     if dpi is None:
    44         dpi = gtk.settings_get_default().get_property('gtk-xft-dpi') / 1024
    45     if dpi > 0:
     56    if dpi :
    4657        cmd.append('-dpi')
    4758        cmd.append('%d' % dpi)
    4859
    def _check_xephyr(display): 
    5869                             stderr=open(os.devnull, "w"))
    5970    return result == 0
    6071
    61 def _start_xephyr(dpi, dimensions):
     72def _start_xephyr(dpi, dimensions, fullscreen):
    6273    # FIXME evil workaround until F10 Xephyr is fixed
    6374    if os.path.exists('/etc/fedora-release'):
    6475        if open('/etc/fedora-release').read().startswith('Fedora release 10'):
    65             _run_xephyr(random.randint(100, 500), dpi, dimensions)
     76            _run_xephyr(random.randint(100, 500), dpi, dimensions, fullscreen)
    6677            return
    6778
    6879    for display in range(100, 110):
    6980        if not _check_xephyr(display):
    70             _run_xephyr(display, dpi, dimensions)
     81            _run_xephyr(display, dpi, dimensions, fullscreen)
    7182
    7283            tries = 10
    7384            while tries > 0:
    def main(): 
    126137                      help='Sugar scaling in %')
    127138    parser.add_option('-i', '--dimensions', dest='dimensions',
    128139                      help='Emulator dimensions (ex. 1200x900)')
     140    parser.add_option('-f', '--fullscreen', dest='fullscreen',
     141                      action='store_true', default=None,
     142                      help='Run emulator in fullscreen mode')
     143    parser.add_option('-F', '--no-fullscreen', dest='fullscreen',
     144                      action='store_false',
     145                      help='Do not run emulator in fullscreen mode')
    129146    (options, args) = parser.parse_args()
    130147
    131148    _setup_env()
    132149
    133     _start_xephyr(options.dpi, options.dimensions)
     150    _start_xephyr(options.dpi, options.dimensions, options.fullscreen)
    134151
    135152    if options.scaling:
    136153        os.environ['SUGAR_SCALING'] = options.scaling