summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhurikhan <m4r10.5ch14ck@gmail.com>2015-01-11 18:52:42 +0800
committerhurikhan <m4r10.5ch14ck@gmail.com>2015-01-11 18:52:42 +0800
commit3c8b047b111cf20b3823851e298ce42bdf941871 (patch)
tree25ed03cd2742cd1d3a9926021ba9d654d6bd149c
parent466e251abecf3686f0caac40ab886155e43cc0a6 (diff)
get_screen_count() added
-rw-r--r--core/bind/core_bind.cpp5
-rw-r--r--core/bind/core_bind.h1
-rw-r--r--core/os/os.h1
-rw-r--r--platform/x11/os_x11.cpp7
-rw-r--r--platform/x11/os_x11.h1
5 files changed, 15 insertions, 0 deletions
diff --git a/core/bind/core_bind.cpp b/core/bind/core_bind.cpp
index 2b4e2e1239..3f86efc879 100644
--- a/core/bind/core_bind.cpp
+++ b/core/bind/core_bind.cpp
@@ -176,6 +176,10 @@ bool _OS::is_video_mode_fullscreen(int p_screen) const {
}
+int _OS::get_screen_count() const {
+ return OS::get_singleton()->get_screen_count();
+}
+
Point2 _OS::get_window_position() const {
return OS::get_singleton()->get_window_position();
}
@@ -656,6 +660,7 @@ void _OS::_bind_methods() {
ObjectTypeDB::bind_method(_MD("is_video_mode_resizable","screen"),&_OS::is_video_mode_resizable,DEFVAL(0));
ObjectTypeDB::bind_method(_MD("get_fullscreen_mode_list","screen"),&_OS::get_fullscreen_mode_list,DEFVAL(0));
+ ObjectTypeDB::bind_method(_MD("get_screen_count"),&_OS::get_screen_count);
ObjectTypeDB::bind_method(_MD("get_window_position"),&_OS::get_window_position);
ObjectTypeDB::bind_method(_MD("set_window_position"),&_OS::set_window_position);
ObjectTypeDB::bind_method(_MD("get_window_size"),&_OS::get_window_size);
diff --git a/core/bind/core_bind.h b/core/bind/core_bind.h
index e60bb5e66a..cb9a5da479 100644
--- a/core/bind/core_bind.h
+++ b/core/bind/core_bind.h
@@ -108,6 +108,7 @@ public:
bool is_video_mode_resizable(int p_screen=0) const;
Array get_fullscreen_mode_list(int p_screen=0) const;
+ virtual int get_screen_count() const;
virtual Point2 get_window_position() const;
virtual void set_window_position(const Point2& p_position);
virtual Size2 get_window_size() const;
diff --git a/core/os/os.h b/core/os/os.h
index 7e9fdcc579..68769e7ad4 100644
--- a/core/os/os.h
+++ b/core/os/os.h
@@ -150,6 +150,7 @@ public:
virtual VideoMode get_video_mode(int p_screen=0) const=0;
virtual void get_fullscreen_mode_list(List<VideoMode> *p_list,int p_screen=0) const=0;
+ virtual int get_screen_count() const=0;
virtual Point2 get_window_position() const=0;
virtual void set_window_position(const Point2& p_position)=0;
virtual Size2 get_window_size() const=0;
diff --git a/platform/x11/os_x11.cpp b/platform/x11/os_x11.cpp
index f21ea4c9a2..c37358139c 100644
--- a/platform/x11/os_x11.cpp
+++ b/platform/x11/os_x11.cpp
@@ -526,6 +526,10 @@ void OS_X11::set_wm_fullscreen(bool p_enabled) {
XSendEvent(x11_display, DefaultRootWindow(x11_display), False, SubstructureNotifyMask, &xev);
}
+int OS_X11::get_screen_count() const {
+ return XScreenCount(x11_display);
+}
+
Point2 OS_X11::get_window_position() const {
int x,y;
XWindowAttributes xwa;
@@ -597,6 +601,9 @@ void OS_X11::set_window_size(const Size2 p_size) {
void OS_X11::set_fullscreen(bool p_enabled,int p_screen) {
+ if(p_enabled && current_videomode.fullscreen)
+ return;
+
if(p_enabled) {
pre_videomode = current_videomode;
diff --git a/platform/x11/os_x11.h b/platform/x11/os_x11.h
index 1cedea4223..f55b7dc0e3 100644
--- a/platform/x11/os_x11.h
+++ b/platform/x11/os_x11.h
@@ -217,6 +217,7 @@ public:
virtual VideoMode get_video_mode(int p_screen=0) const;
virtual void get_fullscreen_mode_list(List<VideoMode> *p_list,int p_screen=0) const;
+ virtual int get_screen_count() const;
virtual Point2 get_window_position() const;
virtual void set_window_position(const Point2& p_position);
virtual Size2 get_window_size() const;