summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuan Linietsky <reduzio@gmail.com>2014-05-01 11:34:10 -0300
committerJuan Linietsky <reduzio@gmail.com>2014-05-01 11:34:10 -0300
commit6572d5128856b2ec55a2c417c92e584899f4906f (patch)
tree9e01d6efab14567bfff5dd7b8b3b858d83b1868e
parent4dc4e96c8a4fb7e34ecae3a39ef0f3f3fb275e97 (diff)
-Fixes to OpenSSL compilation (more)
-Fix bug in GDScript, now static functions can call static functions.
-rw-r--r--SConstruct3
-rw-r--r--bin/tests/test_gdscript.cpp3
-rw-r--r--demos/2d/platformer/engine.cfg6
-rw-r--r--drivers/openssl/register_openssl.cpp3
-rw-r--r--drivers/openssl/stream_peer_openssl.cpp19
-rw-r--r--modules/gdscript/gd_compiler.cpp7
-rw-r--r--modules/gdscript/gd_script.cpp5
-rw-r--r--modules/gdscript/gd_script.h20
-rw-r--r--platform/x11/detect.py5
9 files changed, 55 insertions, 16 deletions
diff --git a/SConstruct b/SConstruct
index d3e492a18c..a5489d1534 100644
--- a/SConstruct
+++ b/SConstruct
@@ -204,7 +204,8 @@ for p in platform_list:
flag_list = platform_flags[p]
for f in flag_list:
- env[f[0]] = f[1]
+ env[f[0]] = f[1]
+ print(f[0]+":"+f[1])
env.module_list=[]
diff --git a/bin/tests/test_gdscript.cpp b/bin/tests/test_gdscript.cpp
index 9670e6af6e..b62deee2cd 100644
--- a/bin/tests/test_gdscript.cpp
+++ b/bin/tests/test_gdscript.cpp
@@ -442,6 +442,9 @@ static String _disassemble_addr(const Ref<GDScript>& p_script,const GDFunction&
case GDFunction::ADDR_TYPE_SELF: {
return "self";
} break;
+ case GDFunction::ADDR_TYPE_CLASS: {
+ return "class";
+ } break;
case GDFunction::ADDR_TYPE_MEMBER: {
return "member("+p_script->debug_get_member_by_index(addr)+")";
diff --git a/demos/2d/platformer/engine.cfg b/demos/2d/platformer/engine.cfg
index d6fa25c918..50b6b862e9 100644
--- a/demos/2d/platformer/engine.cfg
+++ b/demos/2d/platformer/engine.cfg
@@ -15,8 +15,6 @@ stretch_aspect="keep"
[image_loader]
-;filter=false
-;gen_mipmaps=false
repeat=false
[input]
@@ -31,6 +29,10 @@ spawn=[key(F1), jbutton(0, 11)]
default_gravity=700
+[rasterizer]
+
+use_pixel_snap=true
+
[render]
mipmap_policy=1
diff --git a/drivers/openssl/register_openssl.cpp b/drivers/openssl/register_openssl.cpp
index fe12c55656..a4a60813b6 100644
--- a/drivers/openssl/register_openssl.cpp
+++ b/drivers/openssl/register_openssl.cpp
@@ -1,6 +1,7 @@
#include "register_openssl.h"
#include "stream_peer_openssl.h"
+#ifdef OPENSSL_ENABLED
void register_openssl() {
@@ -14,3 +15,5 @@ void unregister_openssl() {
StreamPeerOpenSSL::finalize_ssl();
}
+#endif
+
diff --git a/drivers/openssl/stream_peer_openssl.cpp b/drivers/openssl/stream_peer_openssl.cpp
index 0751c76e3d..0151ced3b8 100644
--- a/drivers/openssl/stream_peer_openssl.cpp
+++ b/drivers/openssl/stream_peer_openssl.cpp
@@ -553,6 +553,25 @@ void StreamPeerOpenSSL::initialize_ssl() {
}
String config_path =GLOBAL_DEF("ssl/config","");
Globals::get_singleton()->set_custom_property_info("ssl/config",PropertyInfo(Variant::STRING,"ssl/config",PROPERTY_HINT_FILE,"*.cnf"));
+ if (config_path!="") {
+
+ Vector<uint8_t> data = FileAccess::get_file_as_array(config_path);
+ if (data.size()) {
+ data.push_back(0);
+ BIO* mem = BIO_new(BIO_s_mem());
+ BIO_puts(mem,(const char*) data.ptr());
+
+ while(true) {
+ X509*cert = PEM_read_bio_X509(mem, NULL, 0, NULL);
+ if (!cert)
+ break;
+ certs.push_back(cert);
+ }
+ BIO_free(mem);
+ }
+ print_line("Loaded certs from '"+certs_path+"': "+itos(certs.size()));
+
+ }
}
diff --git a/modules/gdscript/gd_compiler.cpp b/modules/gdscript/gd_compiler.cpp
index dd2834bf34..90c83c201b 100644
--- a/modules/gdscript/gd_compiler.cpp
+++ b/modules/gdscript/gd_compiler.cpp
@@ -452,6 +452,7 @@ int GDCompiler::_parse_expression(CodeGen& codegen,const GDParser::Node *p_expre
const GDParser::Node *instance = on->arguments[0];
+ bool in_static=false;
if (instance->type==GDParser::Node::TYPE_SELF) {
//room for optimization
@@ -465,7 +466,10 @@ int GDCompiler::_parse_expression(CodeGen& codegen,const GDParser::Node *p_expre
int ret;
- if (i==1) {
+ if (i==0 && on->arguments[i]->type==GDParser::Node::TYPE_SELF && codegen.function_node && codegen.function_node->_static) {
+ //static call to self
+ ret=(GDFunction::ADDR_TYPE_CLASS<<GDFunction::ADDR_BITS);
+ } else if (i==1) {
if (on->arguments[i]->type!=GDParser::Node::TYPE_IDENTIFIER) {
_set_error("Attempt to call a non-identifier.",on);
@@ -475,6 +479,7 @@ int GDCompiler::_parse_expression(CodeGen& codegen,const GDParser::Node *p_expre
ret=codegen.get_name_map_pos(id->name);
} else {
+
ret = _parse_expression(codegen,on->arguments[i],slevel);
if (ret<0)
return ret;
diff --git a/modules/gdscript/gd_script.cpp b/modules/gdscript/gd_script.cpp
index 75bb47ceab..299a7d3e54 100644
--- a/modules/gdscript/gd_script.cpp
+++ b/modules/gdscript/gd_script.cpp
@@ -61,6 +61,10 @@ Variant *GDFunction::_get_variant(int p_address,GDInstance *p_instance,GDScript
}
return &self;
} break;
+ case ADDR_TYPE_CLASS: {
+
+ return &p_script->_static_ref;
+ } break;
case ADDR_TYPE_MEMBER: {
//member indexing is O(1)
if (!p_instance) {
@@ -1678,6 +1682,7 @@ Ref<GDScript> GDScript::get_base() const {
GDScript::GDScript() {
+ _static_ref=this;
valid=false;
subclass_count=0;
initializer=NULL;
diff --git a/modules/gdscript/gd_script.h b/modules/gdscript/gd_script.h
index 55bc547e8d..983899240a 100644
--- a/modules/gdscript/gd_script.h
+++ b/modules/gdscript/gd_script.h
@@ -75,13 +75,14 @@ public:
ADDR_MASK=((1<<ADDR_BITS)-1),
ADDR_TYPE_MASK=~ADDR_MASK,
ADDR_TYPE_SELF=0,
- ADDR_TYPE_MEMBER=1,
- ADDR_TYPE_CLASS_CONSTANT=2,
- ADDR_TYPE_LOCAL_CONSTANT=3,
- ADDR_TYPE_STACK=4,
- ADDR_TYPE_STACK_VARIABLE=5,
- ADDR_TYPE_GLOBAL=6,
- ADDR_TYPE_NIL=7
+ ADDR_TYPE_CLASS=1,
+ ADDR_TYPE_MEMBER=2,
+ ADDR_TYPE_CLASS_CONSTANT=3,
+ ADDR_TYPE_LOCAL_CONSTANT=4,
+ ADDR_TYPE_STACK=5,
+ ADDR_TYPE_STACK_VARIABLE=6,
+ ADDR_TYPE_GLOBAL=7,
+ ADDR_TYPE_NIL=8
};
struct StackDebug {
@@ -139,9 +140,9 @@ public:
int get_max_stack_size() const;
int get_default_argument_count() const;
int get_default_argument_addr(int p_idx) const;
- GDScript *get_script() const { return _script; }
+ GDScript *get_script() const { return _script; }
- void debug_get_stack_member_state(int p_line,List<Pair<StringName,int> > *r_stackvars) const;
+ void debug_get_stack_member_state(int p_line,List<Pair<StringName,int> > *r_stackvars) const;
_FORCE_INLINE_ bool is_empty() const { return _code_size==0; }
@@ -183,6 +184,7 @@ friend class GDInstance;
friend class GDFunction;
friend class GDCompiler;
friend class GDFunctions;
+ Variant _static_ref; //used for static call
Ref<GDNativeClass> native;
Ref<GDScript> base;
GDScript *_base; //fast pointer access
diff --git a/platform/x11/detect.py b/platform/x11/detect.py
index 82aab95e2a..cff7ea86b6 100644
--- a/platform/x11/detect.py
+++ b/platform/x11/detect.py
@@ -56,7 +56,7 @@ def get_flags():
('opengl', 'no'),
('legacygl', 'yes'),
('builtin_zlib', 'no'),
- ('openssl', 'yes'),
+ ("openssl", "yes"),
]
@@ -121,8 +121,7 @@ def configure(env):
env.ParseConfig('pkg-config x11 --cflags --libs')
env.ParseConfig('pkg-config xcursor --cflags --libs')
- if (env["openssl"]=='yes'):
- env.ParseConfig('pkg-config openssl --cflags --libs')
+ env.ParseConfig('pkg-config openssl --cflags --libs')
env.ParseConfig('pkg-config freetype2 --cflags --libs')