Skip to content

[CLOSED] [Linux only] Upgrading to CEF 2704 #403

Open
@core-ai-bot

Description

@core-ai-bot

Issue by nethip
Tuesday Aug 01, 2017 at 06:12 GMT
Originally opened as adobe#619


CEF verison upgrade on Linux to 2704.

Note: CEF version on Windows and Mac will still remain to be 2623. At a later time we will upgrade CEF on all platforms to one version.

The main reason why we could not update CEF on linux to 2171/2623 was because of app quit blockage. Upon App quit, the process was completely blocked as the app was waiting for one of the threads to join. After lot of debugging and analysis, I found out that this was because of Linux sandboxing, gtk_init() needs to be called after CefInitialize().

The other major change is the removal of libcrypto dependency, users now don't have to install this package for Brackets to run on Linux.

Here are other noteworthy changes.

  1. From now on cefclient_gtk.cc will be the entry point for the app on Linux
  2. I have modelled the enitre app to that of CefClient test app.
  3. We are going to be using client::ClientHandler instead of appshell/ClientHandler. The difference is that the former will now derive from appshell/ClientHandler.
  4. The App quit is now wired to RootWindowGtk close. client::RootWindowGtk is part of CefClient. All issues relating to app quit/ closing individual windows are now fixed.(Yay!!!).
  5. Improved multiple windows workflow. g_handler is not going to be used anymore as a new client handler is created for every window creation by RootWindow itself. This improves our multiple windows workflow. Also Debug->New Window, will now have it's own menu bar (finally!). So each of the windows now have their own life time.
  6. Menus creation and handling is now mapped to RootWindowGtk. RootWindowGtk will further deliver specific command to the respective browser.
  7. appshell_extensions_gtk.cpp had an outdated version on master as it was always updated in the linux-1547 branch alone. So migrated all changes, relating to appshell_extensions_gtk.cpp present in linux-1547 branch to master.
  8. All the changes are pertaining only to Linux. Wherever required I have wrapped all the code with #ifdef OS_LINUX macro
  9. On Linux we are going to call startNodeProcess() at the start itself. If the thread, that spawns the node process, is called after CefInitialize(), it blocks the app quit.
  10. Wired in the new developer tools.
  11. Have modified cef_paths.gypi inside the redistributable for Linux 32 bit, zipped and uploaded that to S3.
  12. Made changes to control file to remove the libcrypto dependency

Note to the committers: Whoever is merging, feel free to squash all the commits and merge.

Tasks

  • Install on Linux 14 and 16 LTS (both 32 and 64) systems and check if Brackets is running fine on these systems
  • Verify if libcrypto dependency is gone
  • Build this branch on all platforms and see Win and Mac are building fine.
  • Run unit tests
  • Sometimes, there is a performance bug with respect to startup, because of https://github.com/adobe/brackets/blob/master/src/filesystem/FileSystemEntry.js#L194. I could narrow down it down to recursion on startup. I will unit test more on different systems and take a call.

@ficristo, @ingorichter, @eyelash, @zaggino It would be great if you can review this PR.


nethip included the following code: https://github.com/adobe/brackets-shell/pull/619/commits

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions