Description
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.
- From now on
cefclient_gtk.cc
will be the entry point for the app on Linux - I have modelled the enitre app to that of
CefClient
test app. - We are going to be using
client::ClientHandler
instead ofappshell/ClientHandler
. The difference is that the former will now derive fromappshell/ClientHandler
. - The App quit is now wired to
RootWindowGtk
close.client::RootWindowGtk
is part ofCefClient
. All issues relating to app quit/ closing individual windows are now fixed.(Yay!!!). - Improved multiple windows workflow.
g_handler
is not going to be used anymore as a new client handler is created for every window creation byRootWindow
itself. This improves our multiple windows workflow. AlsoDebug->New Window
, will now have it's own menu bar (finally!). So each of the windows now have their own life time. - Menus creation and handling is now mapped to
RootWindowGtk
.RootWindowGtk
will further deliver specific command to the respective browser. appshell_extensions_gtk.cpp
had an outdated version onmaster
as it was always updated in thelinux-1547
branch alone. So migrated all changes, relating toappshell_extensions_gtk.cpp
present inlinux-1547
branch tomaster
.- All the changes are pertaining only to Linux. Wherever required I have wrapped all the code with
#ifdef OS_LINUX
macro - On Linux we are going to call
startNodeProcess()
at the start itself. If the thread, that spawns the node process, is called afterCefInitialize()
, it blocks the app quit. - Wired in the new developer tools.
- Have modified
cef_paths.gypi
inside the redistributable for Linux 32 bit, zipped and uploaded that to S3. - Made changes to
control
file to remove thelibcrypto
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