diff options
author | Juan Linietsky <reduzio@gmail.com> | 2014-05-01 11:34:10 -0300 |
---|---|---|
committer | Juan Linietsky <reduzio@gmail.com> | 2014-05-01 11:34:10 -0300 |
commit | 6572d5128856b2ec55a2c417c92e584899f4906f (patch) | |
tree | 9e01d6efab14567bfff5dd7b8b3b858d83b1868e | |
parent | 4dc4e96c8a4fb7e34ecae3a39ef0f3f3fb275e97 (diff) |
-Fixes to OpenSSL compilation (more)
-Fix bug in GDScript, now static functions can call static functions.
-rw-r--r-- | SConstruct | 3 | ||||
-rw-r--r-- | bin/tests/test_gdscript.cpp | 3 | ||||
-rw-r--r-- | demos/2d/platformer/engine.cfg | 6 | ||||
-rw-r--r-- | drivers/openssl/register_openssl.cpp | 3 | ||||
-rw-r--r-- | drivers/openssl/stream_peer_openssl.cpp | 19 | ||||
-rw-r--r-- | modules/gdscript/gd_compiler.cpp | 7 | ||||
-rw-r--r-- | modules/gdscript/gd_script.cpp | 5 | ||||
-rw-r--r-- | modules/gdscript/gd_script.h | 20 | ||||
-rw-r--r-- | platform/x11/detect.py | 5 |
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') |