summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/array.cpp10
-rw-r--r--core/array.h3
-rw-r--r--core/globals.cpp3
-rw-r--r--core/os/copymem.cpp42
-rw-r--r--core/os/copymem.h87
-rw-r--r--core/variant_call.cpp4
-rw-r--r--doc/base/classes.xml19
-rw-r--r--modules/webm/libvpx/SCsub7
-rw-r--r--platform/osx/detect.py2
-rw-r--r--platform/server/detect.py1
-rw-r--r--platform/windows/os_windows.cpp12
-rw-r--r--platform/x11/detect.py1
-rw-r--r--scene/gui/control.cpp8
-rw-r--r--scene/gui/file_dialog.cpp7
-rw-r--r--scene/main/instance_placeholder.cpp19
-rw-r--r--scene/main/instance_placeholder.h2
-rw-r--r--scene/main/node.cpp6
-rw-r--r--scene/main/node.h1
-rw-r--r--thirdparty/libvpx/vpx_config.h6
-rwxr-xr-xtools/dist/osx_template.app/Contents/Info.plist4
-rwxr-xr-xtools/dist/osx_tools.app/Contents/Info.plist4
21 files changed, 103 insertions, 145 deletions
diff --git a/core/array.cpp b/core/array.cpp
index 683a43e3d0..f7ca67b6a3 100644
--- a/core/array.cpp
+++ b/core/array.cpp
@@ -150,6 +150,16 @@ void Array::erase(const Variant& p_value) {
_p->array.erase(p_value);
}
+Variant Array::front() const {
+ ERR_FAIL_COND_V(_p->array.size() == 0, Variant());
+ return operator[](0);
+}
+
+Variant Array::back() const {
+ ERR_FAIL_COND_V(_p->array.size() == 0, Variant());
+ return operator[](_p->array.size() - 1);
+}
+
int Array::find(const Variant& p_value, int p_from) const {
return _p->array.find(p_value, p_from);
diff --git a/core/array.h b/core/array.h
index eb79b0cf33..fb417b6ec0 100644
--- a/core/array.h
+++ b/core/array.h
@@ -67,6 +67,9 @@ public:
void insert(int p_pos, const Variant& p_value);
void remove(int p_pos);
+ Variant front() const;
+ Variant back() const;
+
void sort();
void sort_custom(Object *p_obj,const StringName& p_function);
void invert();
diff --git a/core/globals.cpp b/core/globals.cpp
index bef40ff330..78b97882be 100644
--- a/core/globals.cpp
+++ b/core/globals.cpp
@@ -54,7 +54,8 @@ String Globals::localize_path(const String& p_path) const {
if (resource_path=="")
return p_path; //not initialied yet
- if (p_path.begins_with("res://") || p_path.begins_with("user://") || p_path.is_abs_path())
+ if (p_path.begins_with("res://") || p_path.begins_with("user://") ||
+ (p_path.is_abs_path() && !p_path.begins_with(resource_path)))
return p_path.simplify_path();
diff --git a/core/os/copymem.cpp b/core/os/copymem.cpp
deleted file mode 100644
index 49f53f1a51..0000000000
--- a/core/os/copymem.cpp
+++ /dev/null
@@ -1,42 +0,0 @@
-/*************************************************************************/
-/* copymem.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#include "copymem.h"
-
-#include <string.h>
-
-void movemem_system(void *to, void *from,int amount) {
-
- memmove(to,from,amount);
-
-}
-
-void zeromem(void* p_mem,size_t p_bytes) {
-
- memset(p_mem,0,p_bytes);
-}
diff --git a/core/os/copymem.h b/core/os/copymem.h
index d7fc46aae4..4b9554519a 100644
--- a/core/os/copymem.h
+++ b/core/os/copymem.h
@@ -31,89 +31,18 @@
#include "typedefs.h"
-///@TODO use optimized routines for this, depending on platform. these are just the standard ones
+#ifdef PLATFORM_COPYMEM
-#define copymem(m_to,m_from,m_count) \
- do { \
- unsigned char * _from=(unsigned char*)m_from; \
- unsigned char * _to=(unsigned char*)m_to; \
- int _count=m_count; \
- for (int _i=0;_i<_count;_i++) \
- _to[_i]=_from[_i]; \
- } while (0);
- /*
- case 0: *_dto++ = *_dfrom++; \
- case 7: *_dto++ = *_dfrom++; \
- case 6: *_dto++ = *_dfrom++; \
- case 5: *_dto++ = *_dfrom++; \
- case 4: *_dto++ = *_dfrom++; \
- case 3: *_dto++ = *_dfrom++; \
- case 2: *_dto++ = *_dfrom++; \
- case 1: *_dto++ = *_dfrom++; \
- */
-#define movemem_duff(m_to, m_from, m_count) \
- do { \
- if (m_to<m_from) { \
- unsigned char* _dto = (unsigned char*)m_to; \
- unsigned char* _dfrom = (unsigned char*)m_from; \
- int n = (m_count + 7) / 8; \
- switch (m_count % 8) { \
- do { \
- case 0: *_dto++ = *_dfrom++; \
- case 7: *_dto++ = *_dfrom++; \
- case 6: *_dto++ = *_dfrom++; \
- case 5: *_dto++ = *_dfrom++; \
- case 4: *_dto++ = *_dfrom++; \
- case 3: *_dto++ = *_dfrom++; \
- case 2: *_dto++ = *_dfrom++; \
- case 1: *_dto++ = *_dfrom++; \
- } while (--n > 0); \
- }; \
- } else if (m_to>m_from) { \
- unsigned char* _dto = &((unsigned char*)m_to)[m_count-1]; \
- unsigned char* _dfrom = &((unsigned char*)m_from)[m_count-1]; \
- int n = (m_count + 7) / 8; \
- switch (m_count % 8) { \
- do { \
- case 0: *_dto-- = *_dfrom--; \
- case 7: *_dto-- = *_dfrom--; \
- case 6: *_dto-- = *_dfrom--; \
- case 5: *_dto-- = *_dfrom--; \
- case 4: *_dto-- = *_dfrom--; \
- case 3: *_dto-- = *_dfrom--; \
- case 2: *_dto-- = *_dfrom--; \
- case 1: *_dto-- = *_dfrom--; \
- } while (--n > 0); \
- }; \
- } \
- } while(0) \
+#include "platform_copymem.h" // included from platform/<current_platform>/platform_copymem.h"
-#define movemem_conventional(m_to,m_from,m_count) \
- do { \
- if (m_to<m_from) { \
- unsigned char * _from=(unsigned char*)m_from; \
- unsigned char * _to=(unsigned char*)m_to; \
- int _count=m_count; \
- for (int _i=0;_i<_count;_i++) \
- _to[_i]=_from[_i]; \
- \
- } else if (m_to>m_from) { \
- unsigned char * _from=(unsigned char*)m_from; \
- unsigned char * _to=(unsigned char*)m_to; \
- int _count=m_count; \
- while (_count--) \
- _to[_count]=_from[_count]; \
- \
- \
- } \
- } while (0); \
+#else
-void movemem_system(void*,void*,int);
+#include <string.h>
-#define movemem movemem_system
-
-
-void zeromem(void* p_mem,size_t p_bytes);
+#define copymem(to,from,count) memcpy(to,from,count)
+#define zeromem(to, count) memset(to, 0, count)
+#define movemem(to, from, count) memmove(to, from, count)
#endif
+#endif
diff --git a/core/variant_call.cpp b/core/variant_call.cpp
index 9b6fa27cf4..0379ae019b 100644
--- a/core/variant_call.cpp
+++ b/core/variant_call.cpp
@@ -472,6 +472,8 @@ static void _call_##m_type##_##m_method(Variant& r_ret,Variant& p_self,const Var
VCALL_LOCALMEM1(Array,resize);
VCALL_LOCALMEM2(Array,insert);
VCALL_LOCALMEM1(Array,remove);
+ VCALL_LOCALMEM0R(Array,front);
+ VCALL_LOCALMEM0R(Array,back);
VCALL_LOCALMEM2R(Array,find);
VCALL_LOCALMEM2R(Array,rfind);
VCALL_LOCALMEM1R(Array,find_last);
@@ -1576,6 +1578,8 @@ _VariantCall::addfunc(Variant::m_vtype,Variant::m_ret,_SCS(#m_method),VCALL(m_cl
ADDFUNC2(ARRAY,NIL,Array,insert,INT,"pos",NIL,"value",varray());
ADDFUNC1(ARRAY,NIL,Array,remove,INT,"pos",varray());
ADDFUNC1(ARRAY,NIL,Array,erase,NIL,"value",varray());
+ ADDFUNC0(ARRAY,NIL,Array,front,varray());
+ ADDFUNC0(ARRAY,NIL,Array,back,varray());
ADDFUNC2(ARRAY,INT,Array,find,NIL,"what",INT,"from",varray(0));
ADDFUNC2(ARRAY,INT,Array,rfind,NIL,"what",INT,"from",varray(-1));
ADDFUNC1(ARRAY,INT,Array,find_last,NIL,"value",varray());
diff --git a/doc/base/classes.xml b/doc/base/classes.xml
index 246f8cdac6..b767c98060 100644
--- a/doc/base/classes.xml
+++ b/doc/base/classes.xml
@@ -4656,6 +4656,20 @@
Remove the first occurrence of a value from the array.
</description>
</method>
+ <method name="front">
+ <return type="Variant">
+ </return>
+ <description>
+ Returns the first element of the array if the array is not empty (size>0).
+ </description>
+ </method>
+ <method name="back">
+ <return type="Variant">
+ </return>
+ <description>
+ Returns the last element of the array if the array is not empty (size>0).
+ </description>
+ </method>
<method name="find">
<return type="int">
</return>
@@ -15526,7 +15540,7 @@
<return type="int">
</return>
<description>
- Returns a status string like STATUS_REQUESTING. Need to call [method poll] in order to get status updates.
+ Returns a STATUS_* enum constant. Need to call [method poll] in order to get status updates.
</description>
</method>
<method name="has_response" qualifiers="const">
@@ -22621,7 +22635,7 @@
Nodes are the base bricks with which Godot games are developed. They can be set as children of other nodes, resulting in a tree arrangement. A given node can contain any number of nodes as children (but there is only one scene tree root node) with the requirement that all siblings (direct children of a node) should have unique names.
Any tree of nodes is called a [i]scene[/i]. Scenes can be saved to the disk and then instanced into other scenes. This allows for very high flexibility in the architecture and data model of the projects. Nodes can optionally be added to groups. This makes it easy to reach a number of nodes from the code (for example an "enemies" group) to perform grouped actions.
[b]Scene tree:[/b] The [SceneTree] contains the active tree of nodes. When a node is added to the scene tree, it receives the NOTIFICATION_ENTER_TREE notification and its [method _enter_tree] callback is triggered. Children nodes are always added [i]after[/i] their parent node, i.e. the [method _enter_tree] callback of a parent node will be triggered before its child's.
- Once all nodes have been added in the scene tree, they receive the NOTIFICATION_READY notification and their respective [method _ready] callbacks are triggered. For groups of nodes, the [method _ready] callback is called in reverse order, from the children up to the parent nodes.
+ Once all nodes have been added in the scene tree for the first time, they receive the NOTIFICATION_READY notification and their respective [method _ready] callbacks are triggered. For groups of nodes, the [method _ready] callback is called in reverse order, from the children up to the parent nodes.
It means that when adding a scene to the scene tree, the following order will be used for the callbacks: [method _enter_tree] of the parent, [method _enter_tree] of the children, [method _ready] of the children and finally [method _ready] of the parent (and that recursively for the whole scene).
[b]Processing:[/b] Nodes can be set to the "process" state, so that they receive a callback on each frame requesting them to process (do something). Normal processing (callback [method _process], toggled with [method set_process]) happens as fast as possible and is dependent on the frame rate, so the processing time [i]delta[/i] is variable. Fixed processing (callback [method _fixed_process], toggled with [method set_fixed_process]) happens a fixed amount of times per second (by default 60) and is useful to link itself to the physics.
Nodes can also process input events. When set, the [method _input] function will be called for each input that the program receives. In many cases, this can be overkill (unless used for simple projects), and the [method _unhandled_input] function might be preferred; it is called when the input event was not handled by anyone else (typically, GUI [Control] nodes), ensuring that the node only receives the events that were meant for it.
@@ -23255,6 +23269,7 @@
<constant name="NOTIFICATION_MOVED_IN_PARENT" value="12">
</constant>
<constant name="NOTIFICATION_READY" value="13">
+ Notification received the first time the object is added into the scene tree, but after all it's children have received it.
</constant>
<constant name="NOTIFICATION_FIXED_PROCESS" value="16">
</constant>
diff --git a/modules/webm/libvpx/SCsub b/modules/webm/libvpx/SCsub
index 365cabd072..a6b9e46ee8 100644
--- a/modules/webm/libvpx/SCsub
+++ b/modules/webm/libvpx/SCsub
@@ -263,14 +263,15 @@ if env["platform"] == 'uwp':
else:
webm_cpu_x86 = True
else:
+ is_ios_x86 = (env["platform"] == 'iphone' and env["ios_sim"] == "yes")
is_android_x86 = (env["platform"] == 'android' and env["android_arch"] == 'x86')
if is_android_x86:
cpu_bits = '32'
if osx_fat:
webm_cpu_x86 = True
else:
- webm_cpu_x86 = (cpu_bits == '32' or cpu_bits == '64') and (env["platform"] == 'windows' or env["platform"] == 'x11' or env["platform"] == 'osx' or env["platform"] == 'haiku' or is_android_x86)
- webm_cpu_arm = env["platform"] == 'iphone' or env["platform"] == 'bb10' or (env["platform"] == 'android' and env["android_arch"] != 'x86')
+ webm_cpu_x86 = (cpu_bits == '32' or cpu_bits == '64') and (env["platform"] == 'windows' or env["platform"] == 'x11' or env["platform"] == 'osx' or env["platform"] == 'haiku' or is_android_x86 or is_ios_x86)
+ webm_cpu_arm = (not is_ios_x86 and env["platform"] == 'iphone') or env["platform"] == 'bb10' or (not is_android_x86 and env["platform"] == 'android')
if webm_cpu_x86:
import subprocess
@@ -308,7 +309,7 @@ if webm_cpu_x86:
else:
if env["platform"] == 'windows' or env["platform"] == 'uwp':
env_libvpx["ASFORMAT"] = 'win'
- elif env["platform"] == 'osx':
+ elif env["platform"] == 'osx' or env["platform"] == "iphone":
env_libvpx["ASFORMAT"] = 'macho'
else:
env_libvpx["ASFORMAT"] = 'elf'
diff --git a/platform/osx/detect.py b/platform/osx/detect.py
index 9191f1aabc..ccd86177ab 100644
--- a/platform/osx/detect.py
+++ b/platform/osx/detect.py
@@ -80,10 +80,12 @@ def configure(env):
env.Append(CPPFLAGS=["-DAPPLE_STYLE_KEYS"])
env.Append(CPPFLAGS=['-DUNIX_ENABLED', '-DGLES2_ENABLED', '-DOSX_ENABLED'])
+ env.Append(CPPFLAGS=["-mmacosx-version-min=10.9"])
env.Append(LIBS=['pthread'])
#env.Append(CPPFLAGS=['-F/Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks', '-isysroot', '/Developer/SDKs/MacOSX10.4u.sdk', '-mmacosx-version-min=10.4'])
#env.Append(LINKFLAGS=['-mmacosx-version-min=10.4', '-isysroot', '/Developer/SDKs/MacOSX10.4u.sdk', '-Wl,-syslibroot,/Developer/SDKs/MacOSX10.4u.sdk'])
env.Append(LINKFLAGS=['-framework', 'Cocoa', '-framework', 'Carbon', '-framework', 'OpenGL', '-framework', 'AGL', '-framework', 'AudioUnit', '-lz', '-framework', 'IOKit', '-framework', 'ForceFeedback'])
+ env.Append(LINKFLAGS=["-mmacosx-version-min=10.9"])
if (env["CXX"] == "clang++"):
env.Append(CPPFLAGS=['-DTYPED_METHOD_BIND'])
diff --git a/platform/server/detect.py b/platform/server/detect.py
index 4d86ffd376..8bc85f342d 100644
--- a/platform/server/detect.py
+++ b/platform/server/detect.py
@@ -76,7 +76,6 @@ def configure(env):
env.ParseConfig('pkg-config libwebp --cflags --libs')
if (env['builtin_freetype'] == 'no'):
- env['builtin_libpng'] = 'no' # Freetype links against libpng
env.ParseConfig('pkg-config freetype2 --cflags --libs')
if (env['builtin_libpng'] == 'no'):
diff --git a/platform/windows/os_windows.cpp b/platform/windows/os_windows.cpp
index 3987044d80..04afe63e64 100644
--- a/platform/windows/os_windows.cpp
+++ b/platform/windows/os_windows.cpp
@@ -1329,10 +1329,18 @@ void OS_Windows::vprint(const char* p_format, va_list p_list, bool p_stderr) {
MultiByteToWideChar(CP_UTF8,0,buf,len,wbuf,wlen);
wbuf[wlen]=0;
+// Recent MinGW and MSVC compilers seem to disagree on the case here
+#ifdef __MINGW32__
if (p_stderr)
- fwprintf(stderr,L"%s",wbuf);
+ fwprintf(stderr, L"%S", wbuf);
else
- wprintf(L"%s",wbuf);
+ wprintf(L"%S", wbuf);
+#else // MSVC
+ if (p_stderr)
+ fwprintf(stderr, L"%s", wbuf);
+ else
+ wprintf(L"%s", wbuf);
+#endif
#ifdef STDOUT_FILE
//vwfprintf(stdo,p_format,p_list);
diff --git a/platform/x11/detect.py b/platform/x11/detect.py
index d8cd79297e..857b147e14 100644
--- a/platform/x11/detect.py
+++ b/platform/x11/detect.py
@@ -140,7 +140,6 @@ def configure(env):
env.ParseConfig('pkg-config libwebp --cflags --libs')
if (env['builtin_freetype'] == 'no'):
- env['builtin_libpng'] = 'no' # Freetype links against libpng
env.ParseConfig('pkg-config freetype2 --cflags --libs')
if (env['builtin_libpng'] == 'no'):
diff --git a/scene/gui/control.cpp b/scene/gui/control.cpp
index 97f0db97c2..303896b41a 100644
--- a/scene/gui/control.cpp
+++ b/scene/gui/control.cpp
@@ -480,10 +480,10 @@ void Control::_notification(int p_notification) {
if (is_set_as_toplevel()) {
data.SI=get_viewport()->_gui_add_subwindow_control(this);
- /*if (data.theme.is_null() && data.parent && data.parent->data.theme_owner) {
+ if (data.theme.is_null() && data.parent && data.parent->data.theme_owner) {
data.theme_owner=data.parent->data.theme_owner;
notification(NOTIFICATION_THEME_CHANGED);
- }*/
+ }
} else {
@@ -519,10 +519,10 @@ void Control::_notification(int p_notification) {
if (parent_control) {
//do nothing, has a parent control
- /*if (data.theme.is_null() && parent_control->data.theme_owner) {
+ if (data.theme.is_null() && parent_control->data.theme_owner) {
data.theme_owner=parent_control->data.theme_owner;
notification(NOTIFICATION_THEME_CHANGED);
- }*/
+ }
} else if (subwindow) {
//is a subwindow (process input before other controls for that canvas)
data.SI=get_viewport()->_gui_add_subwindow_control(this);
diff --git a/scene/gui/file_dialog.cpp b/scene/gui/file_dialog.cpp
index f942f15ed0..b0214b8648 100644
--- a/scene/gui/file_dialog.cpp
+++ b/scene/gui/file_dialog.cpp
@@ -403,11 +403,12 @@ void FileDialog::update_file_list() {
while(!files.empty()) {
bool match=patterns.empty();
+ String match_str;
for(List<String>::Element *E=patterns.front();E;E=E->next()) {
if (files.front()->get().matchn(E->get())) {
-
+ match_str=E->get();
match=true;
break;
}
@@ -432,14 +433,14 @@ void FileDialog::update_file_list() {
d["dir"]=false;
ti->set_metadata(0,d);
- if (file->get_text()==files.front()->get())
+ if (file->get_text()==files.front()->get() || match_str==files.front()->get())
ti->select(0);
}
files.pop_front();
}
- if (tree->get_root() && tree->get_root()->get_children())
+ if (tree->get_root() && tree->get_root()->get_children() && tree->get_selected()==NULL)
tree->get_root()->get_children()->select(0);
files.clear();
diff --git a/scene/main/instance_placeholder.cpp b/scene/main/instance_placeholder.cpp
index fb047ea5e4..15045a73d5 100644
--- a/scene/main/instance_placeholder.cpp
+++ b/scene/main/instance_placeholder.cpp
@@ -101,11 +101,28 @@ void InstancePlaceholder::replace_by_instance(const Ref<PackedScene> &p_custom_s
base->remove_child(this);
base->add_child(scene);
base->move_child(scene,pos);
-
}
+Dictionary InstancePlaceholder::get_stored_values(bool p_with_order) {
+
+ Dictionary ret;
+ StringArray order;
+
+ for(List<PropSet>::Element *E=stored_values.front();E;E=E->next()) {
+ ret[E->get().name] = E->get().value;
+ if (p_with_order)
+ order.push_back(E->get().name);
+ };
+
+ if (p_with_order)
+ ret[".order"] = order;
+
+ return ret;
+};
+
void InstancePlaceholder::_bind_methods() {
+ ObjectTypeDB::bind_method(_MD("get_stored_values","with_order"),&InstancePlaceholder::get_stored_values,DEFVAL(false));
ObjectTypeDB::bind_method(_MD("replace_by_instance","custom_scene:PackedScene"),&InstancePlaceholder::replace_by_instance,DEFVAL(Variant()));
ObjectTypeDB::bind_method(_MD("get_instance_path"),&InstancePlaceholder::get_instance_path);
}
diff --git a/scene/main/instance_placeholder.h b/scene/main/instance_placeholder.h
index ef76686196..cacba49b39 100644
--- a/scene/main/instance_placeholder.h
+++ b/scene/main/instance_placeholder.h
@@ -57,6 +57,8 @@ public:
void set_instance_path(const String& p_name);
String get_instance_path() const;
+ Dictionary get_stored_values(bool p_with_order = false);
+
void replace_by_instance(const Ref<PackedScene>& p_custom_scene=Ref<PackedScene>());
InstancePlaceholder();
diff --git a/scene/main/node.cpp b/scene/main/node.cpp
index f4fb48682c..78a5cb7302 100644
--- a/scene/main/node.cpp
+++ b/scene/main/node.cpp
@@ -172,7 +172,10 @@ void Node::_propagate_ready() {
data.children[i]->_propagate_ready();
}
data.blocked--;
- notification(NOTIFICATION_READY);
+ if(!data.ready_notified) {
+ data.ready_notified=true;
+ notification(NOTIFICATION_READY);
+ }
}
@@ -2999,6 +3002,7 @@ Node::Node() {
data.fixed_process=false;
data.idle_process=false;
data.inside_tree=false;
+ data.ready_notified=false;
data.owner=NULL;
data.OW=NULL;
diff --git a/scene/main/node.h b/scene/main/node.h
index f18dc81195..7b1444f607 100644
--- a/scene/main/node.h
+++ b/scene/main/node.h
@@ -103,6 +103,7 @@ private:
StringName name;
SceneTree *tree;
bool inside_tree;
+ bool ready_notified;
#ifdef TOOLS_ENABLED
NodePath import_path; //path used when imported, used by scene editors to keep tracking
#endif
diff --git a/thirdparty/libvpx/vpx_config.h b/thirdparty/libvpx/vpx_config.h
index 7058f0327b..9ed45d4006 100644
--- a/thirdparty/libvpx/vpx_config.h
+++ b/thirdparty/libvpx/vpx_config.h
@@ -9,7 +9,11 @@
#ifndef VPX_CONFIG_H
#define VPX_CONFIG_H
#define RESTRICT
-#define INLINE inline
+#if defined(_MSC_VER) && (_MSC_VER < 1900)
+ #define INLINE __inline
+#else
+ #define INLINE inline
+#endif
#define HAVE_MIPS32 0
#define HAVE_MEDIA 0
diff --git a/tools/dist/osx_template.app/Contents/Info.plist b/tools/dist/osx_template.app/Contents/Info.plist
index 5146c875bc..eee787bdaf 100755
--- a/tools/dist/osx_template.app/Contents/Info.plist
+++ b/tools/dist/osx_template.app/Contents/Info.plist
@@ -27,11 +27,11 @@
<key>NSHumanReadableCopyright</key>
<string>$copyright</string>
<key>LSMinimumSystemVersion</key>
- <string>10.6.0</string>
+ <string>10.9.0</string>
<key>LSMinimumSystemVersionByArchitecture</key>
<dict>
<key>x86_64</key>
- <string>10.6.0</string>
+ <string>10.9.0</string>
</dict>
<key>NSHighResolutionCapable</key>
$highres
diff --git a/tools/dist/osx_tools.app/Contents/Info.plist b/tools/dist/osx_tools.app/Contents/Info.plist
index 2a3e727133..868bbb071d 100755
--- a/tools/dist/osx_tools.app/Contents/Info.plist
+++ b/tools/dist/osx_tools.app/Contents/Info.plist
@@ -27,11 +27,11 @@
<key>NSHumanReadableCopyright</key>
<string>© 2007-2016 Juan Linietsky, Ariel Manzur</string>
<key>LSMinimumSystemVersion</key>
- <string>10.6.0</string>
+ <string>10.9.0</string>
<key>LSMinimumSystemVersionByArchitecture</key>
<dict>
<key>x86_64</key>
- <string>10.6.0</string>
+ <string>10.9.0</string>
</dict>
<key>NSHighResolutionCapable</key>
<true/>