From 83ff00dc29fea381c63c98d6668388f747f15521 Mon Sep 17 00:00:00 2001 From: Cheng Zhao Date: Thu, 10 Jul 2014 10:26:17 +0800 Subject: [PATCH] linux: screen module can not be used in renderer. --- atom/common/api/atom_api_screen.cc | 33 +----------------------------- atom/common/api/lib/screen.coffee | 7 ++++++- vendor/brightray | 2 +- 3 files changed, 8 insertions(+), 34 deletions(-) diff --git a/atom/common/api/atom_api_screen.cc b/atom/common/api/atom_api_screen.cc index 9f77863450e6..2a10390a63b7 100644 --- a/atom/common/api/atom_api_screen.cc +++ b/atom/common/api/atom_api_screen.cc @@ -7,34 +7,8 @@ #include "atom/common/node_includes.h" -#if defined(TOOLKIT_GTK) -#include "base/command_line.h" -#include "base/environment.h" -#include "base/nix/xdg_util.h" -#include "ui/gfx/gtk_util.h" -#endif - namespace mate { -namespace { - -gfx::Display AdaptToWindowManager(const gfx::Display& display) { - gfx::Display changed(display); -#if defined(TOOLKIT_GTK) - scoped_ptr env(base::Environment::Create()); - base::nix::DesktopEnvironment de(base::nix::GetDesktopEnvironment(env.get())); - if (de == base::nix::DESKTOP_ENVIRONMENT_UNITY) { - // Unity's 24px global menu bar should not be included in the work area. - gfx::Rect rect(changed.work_area()); - rect.set_height(rect.height() - 24); - changed.set_work_area(rect); - } -#endif - return changed; -} - -} // namespace - template<> struct Converter { static v8::Handle ToV8(v8::Isolate* isolate, @@ -70,8 +44,7 @@ struct Converter { template<> struct Converter { static v8::Handle ToV8(v8::Isolate* isolate, - const gfx::Display& val) { - gfx::Display display(AdaptToWindowManager(val)); + const gfx::Display& display) { return mate::ObjectTemplateBuilder(isolate) .SetValue("bounds", display.bounds()) .SetValue("workArea", display.work_area()) @@ -88,10 +61,6 @@ namespace { void Initialize(v8::Handle exports, v8::Handle unused, v8::Handle context, void* priv) { -#if defined(TOOLKIT_GTK) - gfx::GdkInitFromCommandLine(*CommandLine::ForCurrentProcess()); -#endif - gfx::Screen* screen = gfx::Screen::GetNativeScreen(); mate::Dictionary dict(context->GetIsolate(), exports); dict.SetMethod("getCursorScreenPoint", diff --git a/atom/common/api/lib/screen.coffee b/atom/common/api/lib/screen.coffee index 1f4989fccd95..d0714b8357a8 100644 --- a/atom/common/api/lib/screen.coffee +++ b/atom/common/api/lib/screen.coffee @@ -1 +1,6 @@ -module.exports = process.atomBinding 'screen' +module.exports = + if process.platform is 'linux' and process.type is 'renderer' + # On Linux we could not access screen in renderer process. + require('remote').require 'screen' + else + process.atomBinding 'screen' diff --git a/vendor/brightray b/vendor/brightray index c1c4cfcaad43..7a4f3c45b7ab 160000 --- a/vendor/brightray +++ b/vendor/brightray @@ -1 +1 @@ -Subproject commit c1c4cfcaad43ca4a802e15328a39f574a97fa272 +Subproject commit 7a4f3c45b7abb15256bae500c7980d54d4299471