1. 06 Feb, 2019 3 commits
    • Eric Toombs's avatar
      weston: add more libinput config options · 6e229ca2
      Eric Toombs authored
      This is so that, for instance, people using weston as their main Wayland
      compositor can invert the sense of two finger scrolling or change
      pointer acceleration using weston.ini, rather than having to edit C
      code.
      
      All of the options that libinput itself exposes through its API are now
      exposed in weston.ini.  The new options are called `tap-and-drag`,
      `tap-and-drag-lock`, `disable-while-typing`, `middle-emulation`,
      `left-handed`, `rotation`, `accel-profile`, `accel-speed`,
      `scroll-method`, `natural-scroll`, and `scroll-button`. I have
      successfully tested everything except for `rotation`, out of a lack of
      hardware support.
      
      weston now depends directly on libevdev for turning button name strings into
      kernel input codes. This was needed for the `scroll-button` config
      option. (weston already depends indirectly on libevdev through
      libinput, so I figured people would be OK with this.) As a practical
      matter for debian-style packagers, weston now has a build dependency on
      libevdev-dev.
      
      Right now, the code applies the same options to all attached devices
      that a given option is relevant for. There are plans for multiple
      [libinput] sections, each with different device filters, for users who
      need more control here.
      Signed-off-by: Eric Toombs's avatarEric Toombs <3672-ewtoombs@users.noreply.gitlab.freedesktop.org>
      6e229ca2
    • Eric Toombs's avatar
      weston: deprecate enable_tap in favour of enable-tap · 9d222038
      Eric Toombs authored
      This is to increase consistency in config option naming in weston.ini.
      (Prefer hyphens over underscores to separate words.)
      
      If enable_tap is present in weston.ini, an obnoxious error message is
      logged with weston_log(). In terms of configuration, if enable-tap is
      present, enable_tap is ignored.
      Signed-off-by: Eric Toombs's avatarEric Toombs <3672-ewtoombs@users.noreply.gitlab.freedesktop.org>
      9d222038
    • Eric Toombs's avatar
  2. 31 Jan, 2019 1 commit
  3. 18 Dec, 2018 1 commit
    • Marius Vlad's avatar
      libweston: Allow taking screenshots when debug protocol is enabled · 4e1d9bc7
      Marius Vlad authored
      Screenshots of the outputs can only be taken by having a keyboard
      plug-ed in, as to avoid potential malicious intent. On the other hand,
      this is problematic as there are cases where a keyboard cannot
      be used as a input device. A particular use-case is that for
      multiple devices it can be cumbersome to connect a keyboard such
      that using ssh can be much easier and can be further automated.
      
      This patch allows taking screenshots without the need of having a
      keyboard connected when debug protocol is enabled.
      
      Add also a few words about the fact that this is a serious issue
      and can lead to silently leaking the output contents.
      Signed-off-by: Marius Vlad's avatarMarius Vlad <marius.vlad0@gmail.com>
      4e1d9bc7
  4. 09 Dec, 2018 1 commit
    • Daniel Stone's avatar
      Add Meson build system · 8011b0fa
      Daniel Stone authored
      Meson is a build system, currently implemented in Python, with multiple
      output backends, including Ninja and Make. The build file syntax is
      clean and easy to read unlike autotools. In practise, configuring and
      building with Meson and Ninja has been observed to be much faster than
      with autotools. Also cross-building support is excellent.
      
      More information at http://mesonbuild.com
      
      Since moving to Meson requires some changes from users in any case, we
      took this opportunity to revamp build options. Most of the build options
      still exist, some have changed names or more, and a few have been
      dropped. The option to choose the Cairo flavour is not implemented since
      for the longest time the Cairo image backend has been the only
      recommended one.
      
      This Meson build should be fully functional and it installs everything
      an all-enabled autotools build does. Installed pkg-config files have
      some minor differences that should be insignificant. Building of some
      developer documentation that was never installed with autotools is
      missing.
      
      It is expected that the autotools build system will be removed soon
      after the next Weston release.
      Signed-off-by: Daniel Stone's avatarDaniel Stone <daniels@collabora.com>
      Co-authored-by: Pekka Paalanen's avatarPekka Paalanen <pq@iki.fi>
      Signed-off-by: Pekka Paalanen's avatarPekka Paalanen <pq@iki.fi>
      8011b0fa
  5. 15 Nov, 2018 1 commit
    • Dima Ryazanov's avatar
      Don't look for weston.ini in the current working directory · ad0d83bd
      Dima Ryazanov authored
      It's a bit surprising that Weston looks different when launched from the root
      of the git repo vs from elsewhere.
      
      But it's also technically a security vulnerability: if I launch it from
      a directory like /tmp, it might pick up a weston.ini created by another user,
      which could then load modules with arbitrary code. Basically, it's the same
      problem as including "." in $PATH.
      Signed-off-by: Dima Ryazanov's avatarDima Ryazanov <dima@gmail.com>
      ad0d83bd
  6. 30 Oct, 2018 1 commit
    • Tomohito Esaki's avatar
      Add remoting plugin for output streaming · f709d220
      Tomohito Esaki authored
      Remoting plugin support streaming image of virtual output on drm-backend
      to remote output. By appending remote-output section in weston.ini,
      weston loads remoting plugin module and creates virtual outputs via
      remoting plugin. The mode, host, and port properties are configurable in
      remote-output section.
      
      This plugin send motion jpeg images to client via RTP using gstreamer.
      Client can receive by using following pipeline of gst-launch.
      
      gst-launch-1.0 rtpbin name=rtpbin \
         udpsrc caps="application/x-rtp,media=(string)video,clock-rate=(int)90000,
      		encoding-name=JPEG,payload=26" port=[PORTNUMBER] !
                rtpbin.recv_rtp_sink_0 \
         rtpbin. ! rtpjpegdepay ! jpegdec ! autovideosink \
         udpsrc port=[PORTNUMBER+1] ! rtpbin.recv_rtcp_sink_0 \
         rtpbin.send_rtcp_src_0 !
                udpsink port=[PORTNUMBER+2] sync=false async=false
      
      where, PORTNUMBER is specified in weston.ini.
      Signed-off-by: Tomohito Esaki's avatarTomohito Esaki <etom@igel.co.jp>
      f709d220
  7. 17 Sep, 2018 3 commits
  8. 27 Aug, 2018 1 commit
  9. 09 Jul, 2018 1 commit
  10. 06 Jul, 2018 1 commit
    • Ankit Nautiyal's avatar
      man: add description for specifying modes with aspect-ratio in weston.ini · f82ff35e
      Ankit Nautiyal authored
      This patch adds information about the new resolution-format that can
      be specified by a user in weston.ini to select a CEA mode. CEA defines
      timing of a video mode, which is considered as a standard for
      HDMI certification and compliance testing. It defines each and every
      parameter, of  a video mode, like h/vactive,h/vfront h/vback etc.,
      including aspect-ratio information. The drm layer, specifies the
      aspect-ratio information in user-mode flag bits 19-22. For the non-CEA
      modes a value of 0 is given in the aspect-ratio flag bits. Each
      CEA-mode is identified by a unique, Video Identification Code (VIC).
      For example, VIC=4 is 1280x720@60 aspect-ratio 16:9.
      This mode will be different than a non-CEA mode 1280x720@60 0:0.
      
      The new mode-format helps to differentiate between the CEA and
      non-CEA modes, by letting user specify aspect-ratio along with other
      paremeters: mode=widthxheight@rr ratio.
      
      This helps when certification testing is done, in tests like 7-27,
      the HDMI analyzer applies a particular CEA mode, and expects the
      applied mode to be with exactly same timings, including the
      aspect-ratio and VIC field.
      Signed-off-by: Ankit Nautiyal's avatarAnkit Nautiyal <ankit.k.nautiyal@intel.com>
      Reviewed-by: Pekka Paalanen's avatarPekka Paalanen <pekka.paalanen@collabora.co.uk>
      f82ff35e
  11. 02 Jul, 2018 1 commit
  12. 29 Jun, 2018 2 commits
    • Pekka Paalanen's avatar
      weston: add force-on option for DRM · 90718170
      Pekka Paalanen authored
      Add a new boolean output section key "force-on". When set to true, the
      output will be enabled regardless of connector status. This is the
      opposite of the mode=off setting.
      
      Forcing connectors on is useful in special circumstances: avoid output
      configuration changes due to hotplug e.g. with KVM switches, or hardware
      with unreliable connector status readout for example.
      Signed-off-by: Pekka Paalanen's avatarPekka Paalanen <pekka.paalanen@collabora.co.uk>
      Reviewed-by: default avatarIan Ray <ian.ray@ge.com>
      90718170
    • Pekka Paalanen's avatar
      weston: support clone mode on DRM-frontend · 944dd235
      Pekka Paalanen authored
      Add a new output section key "same-as" for configuring clone mode. An
      output marked "same-as" another output will be configured identically to
      the other output.
      
      The current implementation supports only CRTC sharing for clone mode.
      Independent CRTC clone mode cannot be supported until output layout
      logic is moved from libweston into the frontend and libweston's damage
      tracking issues stemming from overlapping outputs are solved.
      
      Quite a lot of infrastructure is needed to properly configure clone
      mode. The implemented logic allows easy addition of independent CRTC
      clone mode once libweston supports it. The idea is that wet_layoutput is
      the item to be laid out and all weston_outputs a wet_layoutput
      contains show exactly the same area of the desktop.
      
      The configuration logic attempts to automatically fall back to creating
      more weston_outputs when all heads do not work under the same
      weston_output. For now, the fallback path ends with an error message.
      
      Enabling a weston_output is bit complicated, because one needs to first
      collect all relevant heads, try to attach them all to the weston_output,
      and then back up head by head until enabling the weston_output succeeds.
      A new weston_output is created for the left-over heads and the process
      is repeated.
      
      CRTC-sharing clone mode is the most efficient clone mode, offering
      synchronized scanout timings, but it is not always supported by
      hardware.
      
      v10:
      - rebased trivial conflicts in man page
      - switch to gitlab issue URL
      
      v9:
      - replace weston_compositor_set_heads_changed_cb() with
        weston_compositor_add_heads_changed_listener()
      - remove workaround in simple_head_enable()
      
      v6:
      - Add man-page note about cms-colord.
      - Don't create an output just to turn it off.
      
      Fixes: wayland/weston#22Signed-off-by: Pekka Paalanen's avatarPekka Paalanen <pekka.paalanen@collabora.co.uk>
      Acked-by: default avatarDerek Foreman <derekf@osg.samsung.com>
      Acked-by: Daniel Stone's avatarDaniel Stone <daniels@collabora.com>
      Reviewed-by: default avatarIan Ray <ian.ray@ge.com>
      944dd235
  13. 28 Jun, 2018 1 commit
  14. 13 Jun, 2018 1 commit
  15. 30 May, 2018 1 commit
  16. 24 May, 2018 1 commit
  17. 20 Apr, 2018 1 commit
  18. 09 Feb, 2018 1 commit
    • Pekka Paalanen's avatar
      weston: remove SEGV and ABRT handlers · bb707dc0
      Pekka Paalanen authored
      Catching an ABRT is kind of ok, catching a SEGV is russian roulette. We
      have been quite lucky with it, but I've started hitting crashes inside
      malloc() which causes a deadlock when our SEGV handler needs to malloc()
      as well (weston_log_timestamp()).
      
      One reason to catch SEGV and ABRT was to attempt to restore the VT on
      the DRM-backend. Nowadays that job is done by logind or weston-launch.
      
      The signal handler also printed a backtrace, which for me personally has
      been extremely helpful. Arguably it's not necessary though, when we have
      core files and services that catch cores. For instance, if using
      systemd, 'coredumpctl gdb' is delightfully easy for getting into the
      saved core.
      
      Therefore, this code does more harm than it is useful, so remove it. We
      also drop an optional dependency to libunwind.
      Signed-off-by: Pekka Paalanen's avatarPekka Paalanen <pekka.paalanen@collabora.co.uk>
      Reviewed-by: Daniel Stone's avatarDaniel Stone <daniels@collabora.com>
      bb707dc0
  19. 18 Dec, 2017 2 commits
  20. 28 Nov, 2017 2 commits
  21. 04 Sep, 2017 1 commit
  22. 20 Mar, 2017 1 commit
  23. 07 Mar, 2017 1 commit
    • Emmanuel Gil Peyrot's avatar
      compositor-drm: pageflip timeout implementation · 11ae2a30
      Emmanuel Gil Peyrot authored
      Weston will not repaint until previous update has been acked by a
      pageflip event coming from the drm driver. However, some buggy drivers
      won’t return those events or will stop sending them at some point and
      Weston output repaints will completely freeze. To ease developers’ task
      in testing their drivers, this patch makes compositor-drm use a timer
      to detect cases where those pageflip events stop coming.
      
      This timeout implementation is software only and includes basic
      features usually found in a watchdog. We simply exit Weston gracefully
      with a log message and an exit code when the timout is reached.
      
      The timeout value can be set via weston.ini by adding a
      pageflip-timeout=<MILLISECONDS> entry under [core]
      section. Setting it to 0 disables the timeout feature.
      
      v2:
      - Made sure we would get both the pageflip and the vblank events before
        stopping the timer.
      - Reordered the error and success cases in
        drm_output_pageflip_timer_create() to be more in line with the rest
        of the code.
      
      v3:
      - Reordered (de)arming of the timer with the code around it to avoid it
        being rearmed before the current dearming.
      - Return the proper value for the dispatcher in the pageflip_timeout
        callback.
      - Also display the output name in case the timer fires.
      
      v4:
      - Reordered a forgotten timer rearming after its drmModePageFlip().
      
      Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=83884
      Signed-off-by: Frederic Plourde <frederic.plourde at collabora.co.uk>
      Signed-off-by: default avatarEmmanuel Gil Peyrot <emmanuel.peyrot@collabora.com>
      Reviewed-by: Daniel Stone's avatarDaniel Stone <daniels@collabora.com>
      Reviewed-by: Pekka Paalanen's avatarPekka Paalanen <pekka.paalanen@collabora.co.uk>
      11ae2a30
  24. 17 Jan, 2017 1 commit
  25. 16 Jan, 2017 1 commit
  26. 03 Jan, 2017 1 commit
  27. 22 Oct, 2016 1 commit
  28. 03 Jun, 2016 1 commit
    • Pekka Paalanen's avatar
      Remove Raspberry Pi backend and renderer · ca52b31d
      Pekka Paalanen authored
      This patch completely removes the Raspberry Pi backend and the renderer.
      
      The backend and the renderer were written to use the proprietary
      DispmanX API available only on the Raspberry Pi, to demonstrate what the
      tiny computer is capable of graphics wise. They were also used to
      demonstrate how Wayland and Weston in particular could leverage hardware
      compositing capabilities that are not OpenGL. The backend was first
      added in e8de35c9, in 2012.
      
      Since then, the major point has been proven. Over time, support for the
      rpi-backend diminished, it started to deteriorate and hinder Weston
      development. On May 11, I tried to ask if anyone actually cared about
      the rpi-backend, but did not get any votes for keeping it:
      https://lists.freedesktop.org/archives/wayland-devel/2016-May/028764.html
      
      The rpi-backend is a good example of how using an API that is only
      available for specific hardware, even more so as it is only available
      with a proprietary driver stack, is not maintainable in the long run.
      Most developers working on Weston either just cannot, or cannot bother
      to test things also on the RPi. Breakage creeps in without anyone
      noticing. If someone actually notices it, fixing it will require a very
      specific environment to be able to test. Also the quality of the
      proprietary implementation fluctuated. There are reports that RPi
      firmware updates randomly broke Weston, and that nowadays it is very
      hard to find a RPi firmware version that you could expect to work with
      Weston if Weston itself was not broken. We are not even sure what is
      broken nowadays.
      
      This removal does not leave Raspberry Pi users cold (for long), though.
      There is serious work going on in implementing a FOSS driver stack for
      Raspberry Pi, including modern kernel DRM drivers and Mesa drivers. It
      might not be fully there yet, but the plan is to be able to use the
      standard DRM-backend of Weston on the RPis. See:
      http://dri.freedesktop.org/wiki/VC4/
      
      The rpi-backend had its moments. Now, it needs to go. Good riddance!
      Signed-off-by: Pekka Paalanen's avatarPekka Paalanen <pekka.paalanen@collabora.co.uk>
      Reviewed-by: default avatarDerek Foreman <derekf@osg.samsung.com>
      Acked-by: default avatarBryce Harrington <bryce@osg.samsung.com>
      Acked-by: Jonas Ådahl's avatarJonas Ådahl <jadahl@gmail.com>
      Acked-by: Daniel Stone's avatarDaniel Stone <daniels@collabora.com>
      ca52b31d
  29. 25 Apr, 2016 1 commit
  30. 10 Mar, 2016 1 commit
    • Armin Krezović's avatar
      desktop-shell: make panel clock configurable · c6a55dbf
      Armin Krezović authored
      This patch enhances the panel clock by adding a config file
      option which can be used to either disable the clock or make
      it also show seconds in the current clock format.
      
      v2: Implement suggestions from Pekka:
          - Include Signed-off-by
          - Coding style fixes
          - Implement clock widget allocation by using
            width from cairo_text_extents
          - Highlight config option values in man page
      v3: Implement suggestions from Pekka and Bryce:
          - Use CLOCK_FORMAT_* instead of FORMAT_* in the enum
          - Switch to using fixed clock widget size instead
            of one returned from cairo_text_extents
          - Fixes to config option highlighting in the man page
      v4: Implement more suggestions from Pekka and Bryce:
          - Improve patch changelog
          - Move the check for CLOCK_FORMAT_NONE into the
            caller function
          - Fix a memory leak in panel_create introduced by
            previous revision of this patch
      
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=57583Signed-off-by: default avatarArmin Krezović <armin.krezovic@fet.ba>
      Reviewed-by: Pekka Paalanen's avatarPekka Paalanen <pekka.paalanen@collabora.co.uk>
      c6a55dbf
  31. 12 Jan, 2016 3 commits