1
play

1 IBM arunkumar.thondapu@in.ibm.com EclipseCon NA 2015 3/12/2015 - PowerPoint PPT Presentation

Arun Thondapu Eclipse SWT Project Co-Lead Equinox (Launcher) Committer 1 IBM arunkumar.thondapu@in.ibm.com EclipseCon NA 2015 3/12/2015 Motivation Evolution of GTK+ Porting SWT to GTK+ 3 Challenges Solutions


  1. Arun Thondapu Eclipse SWT Project Co-Lead Equinox (Launcher) Committer 1 IBM arunkumar.thondapu@in.ibm.com EclipseCon NA 2015 3/12/2015

  2.  Motivation  Evolution of GTK+  Porting SWT to GTK+ 3  Challenges  Solutions  Collaboration  WIP  What’s Next ??  Wayland support  Broadway, HTML 5  GTK+ 4 2 EclipseCon NA 2015 3/12/2015

  3.  Linux vs Others  Significant changes in underlying windowing system (GTK+)  Separate API and ABI incompatible streams  How to be on the “bleeding edge”  Need parallel streams of development and maintenance  Open and diverse nature of Linux distributions = support for a large range of GTK+ versions 3 EclipseCon NA 2015 3/12/2015

  4. "GTK+ software architecture" by Shmuel Csaba Otto Traian. Licensed under CC BY-SA 4.0 via Wikimedia Commons - http://commons.wikimedia.org/wiki/File:GTK%2B_software_architecture.svg#mediaviewer/File:GTK%2B_software_architecture.svg 4 EclipseCon NA 2015 3/12/2015

  5.  Originally designed and used in the GNU Image Manipulation Program (GIMP) as a replacement of the Motif toolkit.  GTK+ 2.0  improved text rendering using Pango  a new theme engine  improved accessibility using ATK  complete transition to Unicode using UTF-8 strings  more flexible API and new widgets  usage of Cairo graphics library for rendering vector graphics (since version 2.8) 5 EclipseCon NA 2015 3/12/2015

  6.  GTK+ 3  cairo drawing throughout, GDK no longer wraps the antiquated X11 drawing API  modern input device handling via XInput2  new theming API with CSS syntax for theme configuration and animations  multiple backend support for GDK (including experimental support for Wayland and HTML5)  integration of D-Bus support in GIO  use GIO for launching applications  new widgets, such as a switch and an application chooser  improved support for touch and gestures 6 EclipseCon NA 2015 3/12/2015

  7.  Primary goal was a seamless user experience on a wide variety of Linux versions irrespective of underlying versions of GTK+ shipped by them.  to be as backward compatible as possible  in contrast to most native GTK+ apps including GNOME libswt-pi-gtk-****.so libswt-pi3-gtk-****.so libgtk-x11-2.0.so.0 libgtk-3.so.0 7 EclipseCon NA 2015 3/12/2015

  8.  Do not include individual headers  Do not use deprecated symbols  Use accessor functions instead of direct access  Replace GDK_<keyname> with GDK_KEY_<keyname>  Use GIO for launching applications instead of the gdk_spawn family of functions  Use cairo for drawing  GdkGC and GdkImage are removed  gdk_draw family of functions are gone  GtkWidget “expose - event” signal has been replaced by a new “draw” signal 8 EclipseCon NA 2015 3/12/2015

  9.  The modern GTK+ drawing model 9 EclipseCon NA 2015 3/12/2015

  10.  Many great and diverse contributions from community (led by Red Hat team) towards the GTK+ 3 port  Much more stable and usable now  Please continue to test, report bugs and contribute patches! 10 EclipseCon NA 2015 3/12/2015

  11.  Working on resolving most major outstanding problems before Mars  Bugzilla summary tags – GTK3, GTK 3.10  Lots more stuff being deprecated and replaced by GTK+  GdkColor is being replaced by GdkRGBA  Many enhancements as well but we may not be able to adopt right now, stability is the major concern  Lack of backwards-compatibility in major updates continues to be an issue  Can we aggressively drop support for older versions of GTK+ 2.x? 11 EclipseCon NA 2015 3/12/2015

  12.  Mars drops support for GTK+ < 2.18  How to find out which version of GTK+ is being used by my Eclipse or SWT application?  Use the Java property org.eclipse.swt.internal.gtk.version  Prevent linking against GTK+ 2.x and GTK+ 3.x in the same process  Leads to unexpected hangs or hard-to-diagnose crashes 12 EclipseCon NA 2015 3/12/2015

  13.  Eclipse Mars  GTK+ 3 always (assuming it is installed and available)  Eclipse Luna, SR1 & SR2  GTK+ < 3.10 => GTK3  GTK+ >= 3.10 => GTK2 13 EclipseCon NA 2015 3/12/2015

  14.  Webkit is embedded by default on Linux but XULRunner is also supported  libwebkitgtk-1.0-0 vs. libwebkitgtk-3.0-0  libwebkitgtk-1.0-0 is not installed by default on some distros => Luna and earlier do not have an active browser in Eclipse!  libwebkit2gtk-3.0-25 vs. libwebkit2gtk-4.0-37  XULRunner does not have a GTK+ 3 port yet… 14 EclipseCon NA 2015 3/12/2015

  15.  Wayland is intended as a simpler replacement for X, easier to develop and maintain.  Origins in initial effort towards X12.  Hardware and applications are constantly evolving, X11 extensions are unable to fill in the gaps anymore.  Design and build a new display server from scratch focusing on modern platforms. 15 EclipseCon NA 2015 3/12/2015

  16.  Wayland is a display protocol for a compositor to talk to its clients as well as a C library implementation of that protocol.  Weston reference implementation is the only Wayland compositor as of now.  Eliminates needless complexity and improves performance compared to X11.  Smaller footprint.  Designed to work well with non-PC interfaces (embedded devices, tablets and phones).  Shipped on a number of embedded products, phones, and tablets.  For the desktop, GNOME and KDE ports to Wayland (and of course the protocol itself) are currently WIP. 16 EclipseCon NA 2015 3/12/2015

  17. 17 EclipseCon NA 2015 3/12/2015

  18. 18 EclipseCon NA 2015 3/12/2015

  19. 19 EclipseCon NA 2015 3/12/2015

  20. Rudimentary support available at • this stage Google Summer of Code 2014 • project by Joshua Barkovic 20 EclipseCon NA 2015 3/12/2015

  21.  GDK Broadway backend provides support for displaying GTK+ applications in a web browser, using HTML5 and web sockets.  GDK_BACKEND = broadway  http://127.0.0.1:8080  Works only with GTK3  Use multiple GTK+ applications in the same web browser window, by using the Broadway server, broadwayd , that ships with GTK+.  broadwayd :5  BROADWAY_DISPLAY - Specifies the Broadway display number.  BROADWAY_DISPLAY=:5 gedit 21 EclipseCon NA 2015 3/12/2015

  22. 22 EclipseCon NA 2015 3/12/2015

  23.  Can SWT itself use web (HTML5) based elements to build the UI of the application instead of the OS's native widgets?  Eclipse running inside a web browser?  Allows CSS customization of UI.  Eclipse integration with Orion and Flux in a browser. 23 EclipseCon NA 2015 3/12/2015

  24.  Animations  Scene graph  Effects  Improved CSS support  Transformations  Better cross-platform story  Event bubbling  Better support for application development  No more GDK windows  Touch and gesture support  Multimedia  Focus on HIG 24 EclipseCon NA 2015 3/12/2015

  25. 25 EclipseCon NA 2015 3/12/2015

  26. “ GTK+ 4 shall be as rock-stable (and hence "boring") as GTK+ 2” 26 EclipseCon NA 2015 3/12/2015

  27. 27 EclipseCon NA 2015 3/12/2015

  28. 28 EclipseCon NA 2015 3/12/2015

  29. Evaluate the sessions Sign in: www.eclipsecon.org +1 0 -1 29 EclipseCon NA 2015 3/12/2015

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend