diff options
Diffstat (limited to 'src')
135 files changed, 1985 insertions, 602 deletions
diff --git a/src/3rdparty/libpng.pri b/src/3rdparty/libpng.pri index 7ac1910..81966cb 100644 --- a/src/3rdparty/libpng.pri +++ b/src/3rdparty/libpng.pri @@ -1,20 +1,7 @@ DEFINES *= QT_USE_BUNDLED_LIBPNG !isEqual(QT_ARCH, i386):!isEqual(QT_ARCH, x86_64):DEFINES += PNG_NO_ASSEMBLER_CODE INCLUDEPATH += $$PWD/libpng -SOURCES += $$PWD/libpng/png.c \ - $$PWD/libpng/pngerror.c \ - $$PWD/libpng/pngget.c \ - $$PWD/libpng/pngmem.c \ - $$PWD/libpng/pngpread.c \ - $$PWD/libpng/pngread.c \ - $$PWD/libpng/pngrio.c \ - $$PWD/libpng/pngrtran.c \ - $$PWD/libpng/pngrutil.c \ - $$PWD/libpng/pngset.c \ - $$PWD/libpng/pngtrans.c \ - $$PWD/libpng/pngwio.c \ - $$PWD/libpng/pngwrite.c \ - $$PWD/libpng/pngwtran.c \ - $$PWD/libpng/pngwutil.c + +SOURCES += $$PWD/libpng/privatepng.cpp include($$PWD/zlib_dependency.pri) diff --git a/src/3rdparty/libpng/png.c b/src/3rdparty/libpng/png.c index eed3136..db37732 100644 --- a/src/3rdparty/libpng/png.c +++ b/src/3rdparty/libpng/png.c @@ -13,6 +13,8 @@ #include "pngpriv.h" +namespace PrivatePng { + /* Generate a compiler error if there is an old png.h in the search path. */ typedef png_libpng_version_1_5_4 Your_png_h_is_not_version_1_5_4; @@ -2420,3 +2422,4 @@ png_build_gamma_table(png_structp png_ptr, int bit_depth) } #endif /* READ_GAMMA */ #endif /* defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED) */ +} // namespace PrivatePng diff --git a/src/3rdparty/libpng/png.h b/src/3rdparty/libpng/png.h index c655a51..69d9538 100644 --- a/src/3rdparty/libpng/png.h +++ b/src/3rdparty/libpng/png.h @@ -464,11 +464,6 @@ #ifndef PNG_VERSION_INFO_ONLY -/* Inhibit C++ name-mangling for libpng functions but not for system calls. */ -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - /* Version information for C files, stored in png.c. This had better match * the version above. */ @@ -520,6 +515,7 @@ extern "C" { * See pngconf.h for base types that vary by machine/system */ +namespace PrivatePng { /* This triggers a compiler error in png.c, if png.c and png.h * do not agree upon the version number. */ @@ -2579,10 +2575,7 @@ PNG_EXPORT(207, void, png_save_uint_16, (png_bytep buf, unsigned int i)); PNG_EXPORT_LAST_ORDINAL(229); #endif -#ifdef __cplusplus -} -#endif - #endif /* PNG_VERSION_INFO_ONLY */ /* Do not put anything past this line */ +} // namespace PrivatePng #endif /* PNG_H */ diff --git a/src/3rdparty/libpng/pngconf.h b/src/3rdparty/libpng/pngconf.h index b02f2a0..754f91f 100644 --- a/src/3rdparty/libpng/pngconf.h +++ b/src/3rdparty/libpng/pngconf.h @@ -64,6 +64,7 @@ # endif #endif +namespace PrivatePng { /* COMPILER SPECIFIC OPTIONS. * * These options are provided so that a variety of difficult compilers @@ -627,5 +628,5 @@ typedef char FAR * FAR * FAR * png_charppp; # endif # endif #endif - +} // namespace PrivatePng #endif /* PNGCONF_H */ diff --git a/src/3rdparty/libpng/pngdebug.h b/src/3rdparty/libpng/pngdebug.h index 16f81fd..4547b7d 100644 --- a/src/3rdparty/libpng/pngdebug.h +++ b/src/3rdparty/libpng/pngdebug.h @@ -85,7 +85,7 @@ # define png_debug(l,m) \ do { \ int num_tabs=l; \ - fprintf(PNG_DEBUG_FILE,"%s"m PNG_STRING_NEWLINE,(num_tabs==1 ? "\t" : \ + fprintf(PNG_DEBUG_FILE,"%s" m PNG_STRING_NEWLINE,(num_tabs==1 ? "\t" : \ (num_tabs==2 ? "\t\t":(num_tabs>2 ? "\t\t\t":"")))); \ } while (0) # endif @@ -93,7 +93,7 @@ # define png_debug1(l,m,p1) \ do { \ int num_tabs=l; \ - fprintf(PNG_DEBUG_FILE,"%s"m PNG_STRING_NEWLINE,(num_tabs==1 ? "\t" : \ + fprintf(PNG_DEBUG_FILE,"%s" m PNG_STRING_NEWLINE,(num_tabs==1 ? "\t" : \ (num_tabs==2 ? "\t\t":(num_tabs>2 ? "\t\t\t":""))),p1); \ } while (0) # endif @@ -101,7 +101,7 @@ # define png_debug2(l,m,p1,p2) \ do { \ int num_tabs=l; \ - fprintf(PNG_DEBUG_FILE,"%s"m PNG_STRING_NEWLINE,(num_tabs==1 ? "\t" : \ + fprintf(PNG_DEBUG_FILE,"%s" m PNG_STRING_NEWLINE,(num_tabs==1 ? "\t" : \ (num_tabs==2 ? "\t\t":(num_tabs>2 ? "\t\t\t":""))),p1,p2); \ } while (0) # endif diff --git a/src/3rdparty/libpng/pngerror.c b/src/3rdparty/libpng/pngerror.c index 4d4ceba..5559cfb 100644 --- a/src/3rdparty/libpng/pngerror.c +++ b/src/3rdparty/libpng/pngerror.c @@ -18,6 +18,8 @@ #include "pngpriv.h" +namespace PrivatePng { + #if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED) static PNG_FUNCTION(void, png_default_error,PNGARG((png_structp png_ptr, @@ -670,3 +672,5 @@ png_set_strip_error_numbers(png_structp png_ptr, png_uint_32 strip_mode) } #endif #endif /* PNG_READ_SUPPORTED || PNG_WRITE_SUPPORTED */ +} // namespace PrivatePng + diff --git a/src/3rdparty/libpng/pngget.c b/src/3rdparty/libpng/pngget.c index b5e5798..0f18370 100644 --- a/src/3rdparty/libpng/pngget.c +++ b/src/3rdparty/libpng/pngget.c @@ -14,6 +14,8 @@ #include "pngpriv.h" +namespace PrivatePng { + #if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED) png_uint_32 PNGAPI @@ -1030,3 +1032,4 @@ png_get_io_chunk_name (png_structp png_ptr) #endif /* ?PNG_IO_STATE_SUPPORTED */ #endif /* PNG_READ_SUPPORTED || PNG_WRITE_SUPPORTED */ +} // namespace PrivatePng diff --git a/src/3rdparty/libpng/pnginfo.h b/src/3rdparty/libpng/pnginfo.h index a33bfab..2ce4350 100644 --- a/src/3rdparty/libpng/pnginfo.h +++ b/src/3rdparty/libpng/pnginfo.h @@ -53,6 +53,7 @@ #ifndef PNGINFO_H #define PNGINFO_H +namespace PrivatePng { struct png_info_def { /* the following are necessary for every PNG file */ @@ -266,4 +267,6 @@ defined(PNG_READ_BACKGROUND_SUPPORTED) #endif }; + +} // namespace PrivatePng #endif /* PNGINFO_H */ diff --git a/src/3rdparty/libpng/pngmem.c b/src/3rdparty/libpng/pngmem.c index ea606d6..9f2e4df 100644 --- a/src/3rdparty/libpng/pngmem.c +++ b/src/3rdparty/libpng/pngmem.c @@ -19,6 +19,8 @@ #include "pngpriv.h" +namespace PrivatePng { + #if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED) /* Borland DOS special memory handler */ @@ -665,3 +667,4 @@ png_get_mem_ptr(png_const_structp png_ptr) } #endif /* PNG_USER_MEM_SUPPORTED */ #endif /* PNG_READ_SUPPORTED || PNG_WRITE_SUPPORTED */ +} // PrivatePng namespace diff --git a/src/3rdparty/libpng/pngpread.c b/src/3rdparty/libpng/pngpread.c index a50292a..26eb777 100644 --- a/src/3rdparty/libpng/pngpread.c +++ b/src/3rdparty/libpng/pngpread.c @@ -13,6 +13,8 @@ #include "pngpriv.h" +namespace PrivatePng { + #ifdef PNG_PROGRESSIVE_READ_SUPPORTED /* Push model modes */ @@ -1854,3 +1856,4 @@ png_get_progressive_ptr(png_const_structp png_ptr) return png_ptr->io_ptr; } #endif /* PNG_PROGRESSIVE_READ_SUPPORTED */ +} // namespace PrivatePng diff --git a/src/3rdparty/libpng/pngpriv.h b/src/3rdparty/libpng/pngpriv.h index ca2fb8c..be4146d 100644 --- a/src/3rdparty/libpng/pngpriv.h +++ b/src/3rdparty/libpng/pngpriv.h @@ -46,6 +46,7 @@ /* This is required for the definition of abort(), used as a last ditch * error handler when all else fails. */ + #include <stdlib.h> #define PNGLIB_BUILD @@ -63,10 +64,12 @@ #include "pnginfo.h" #include "pngstruct.h" +namespace PrivatePng { /* This is used for 16 bit gamma tables - only the top level pointers are const, * this could be changed: */ typedef PNG_CONST png_uint_16p FAR * png_const_uint_16pp; +} // namespace PrivatePng /* Added at libpng-1.2.9 */ /* Moved to pngpriv.h at libpng-1.5.0 */ @@ -429,6 +432,7 @@ typedef PNG_CONST png_uint_16p FAR * png_const_uint_16pp; * NOTE: by default this is off - the macro is not used - because the * function call saves a lot of code. */ +namespace PrivatePng { #ifdef PNG_FIXED_POINT_MACRO_SUPPORTED #define png_fixed(png_ptr, fp, s) ((fp) <= 21474 && (fp) >= -21474 ?\ ((png_fixed_point)(100000 * (fp))) : (png_fixed_error(png_ptr, s),0)) @@ -437,6 +441,7 @@ PNG_EXTERN png_fixed_point png_fixed PNGARG((png_structp png_ptr, double fp, png_const_charp text)); #endif #endif +} // namespace PrivatePng /* Constant strings for known chunk types. If you need to add a chunk, * define the name here, and add an invocation of the macro wherever it's @@ -470,18 +475,14 @@ PNG_EXTERN png_fixed_point png_fixed PNGARG((png_structp png_ptr, double fp, #define PNG_GAMMA_MAC_INVERSE 65909 #define PNG_GAMMA_sRGB_INVERSE 45455 - -/* Inhibit C++ name-mangling for libpng functions but not for system calls. */ -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - /* These functions are used internally in the code. They generally * shouldn't be used unless you are writing code to add or replace some * functionality in libpng. More information about most functions can * be found in the files where the functions are located. */ +namespace PrivatePng { + /* Check the user version string for compatibility, returns false if the version * numbers aren't compatible. */ @@ -1355,10 +1356,8 @@ PNG_EXTERN void png_build_gamma_table PNGARG((png_structp png_ptr, /* Maintainer: Put new private prototypes here ^ and in libpngpf.3 */ -#include "pngdebug.h" +} // PrivatePng -#ifdef __cplusplus -} -#endif +#include "pngdebug.h" #endif /* PNGPRIV_H */ diff --git a/src/3rdparty/libpng/pngread.c b/src/3rdparty/libpng/pngread.c index be3df47..662dd4a 100644 --- a/src/3rdparty/libpng/pngread.c +++ b/src/3rdparty/libpng/pngread.c @@ -16,6 +16,8 @@ #include "pngpriv.h" +namespace PrivatePng { + #ifdef PNG_READ_SUPPORTED /* Create a PNG structure for reading, and allocate any memory needed. */ @@ -1452,3 +1454,4 @@ png_read_png(png_structp png_ptr, png_infop info_ptr, #endif /* PNG_INFO_IMAGE_SUPPORTED */ #endif /* PNG_SEQUENTIAL_READ_SUPPORTED */ #endif /* PNG_READ_SUPPORTED */ +} // namespace PrivatePng diff --git a/src/3rdparty/libpng/pngrio.c b/src/3rdparty/libpng/pngrio.c index e9c381c..3a6e536 100644 --- a/src/3rdparty/libpng/pngrio.c +++ b/src/3rdparty/libpng/pngrio.c @@ -20,6 +20,7 @@ #include "pngpriv.h" +namespace PrivatePng { #ifdef PNG_READ_SUPPORTED /* Read the data from whatever input you are using. The default routine @@ -174,3 +175,4 @@ png_set_read_fn(png_structp png_ptr, png_voidp io_ptr, #endif } #endif /* PNG_READ_SUPPORTED */ +} // namespace PrivatePng diff --git a/src/3rdparty/libpng/pngrtran.c b/src/3rdparty/libpng/pngrtran.c index 4e0401a..d5b9d45 100644 --- a/src/3rdparty/libpng/pngrtran.c +++ b/src/3rdparty/libpng/pngrtran.c @@ -18,6 +18,8 @@ #include "pngpriv.h" +namespace PrivatePng { + #ifdef PNG_READ_SUPPORTED /* Set the action on getting a CRC error for an ancillary or critical chunk. */ @@ -4951,3 +4953,4 @@ png_do_read_intrapixel(png_row_infop row_info, png_bytep row) } #endif /* PNG_MNG_FEATURES_SUPPORTED */ #endif /* PNG_READ_SUPPORTED */ +} // namespace PrivatePng diff --git a/src/3rdparty/libpng/pngrutil.c b/src/3rdparty/libpng/pngrutil.c index daf3c5e..9b0ff3e 100644 --- a/src/3rdparty/libpng/pngrutil.c +++ b/src/3rdparty/libpng/pngrutil.c @@ -16,6 +16,7 @@ #include "pngpriv.h" +namespace PrivatePng { #ifdef PNG_READ_SUPPORTED #define png_strtod(p,a,b) strtod(a,b) @@ -458,7 +459,7 @@ png_decompress_chunk(png_structp png_ptr, int comp_type, { /* Success (maybe) - really uncompress the chunk. */ png_size_t new_size = 0; - png_charp text = png_malloc_warn(png_ptr, + png_charp text = (png_charp) png_malloc_warn(png_ptr, prefix_size + expanded_size + 1); if (text != NULL) @@ -501,7 +502,7 @@ png_decompress_chunk(png_structp png_ptr, int comp_type, * amount of compressed data. */ { - png_charp text = png_malloc_warn(png_ptr, prefix_size + 1); + png_charp text = (png_charp) png_malloc_warn(png_ptr, prefix_size + 1); if (text != NULL) { @@ -3666,3 +3667,4 @@ defined(PNG_USER_TRANSFORM_PTR_SUPPORTED) png_ptr->flags |= PNG_FLAG_ROW_INIT; } #endif /* PNG_READ_SUPPORTED */ +} // namespace PrivatePng diff --git a/src/3rdparty/libpng/pngset.c b/src/3rdparty/libpng/pngset.c index 7eaad7d..bb7c1ab 100644 --- a/src/3rdparty/libpng/pngset.c +++ b/src/3rdparty/libpng/pngset.c @@ -18,6 +18,8 @@ #include "pngpriv.h" +namespace PrivatePng { + #if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED) #ifdef PNG_bKGD_SUPPORTED @@ -1224,3 +1226,4 @@ png_set_benign_errors(png_structp png_ptr, int allowed) } #endif /* PNG_BENIGN_ERRORS_SUPPORTED */ #endif /* PNG_READ_SUPPORTED || PNG_WRITE_SUPPORTED */ +} // namespace PrivatePng diff --git a/src/3rdparty/libpng/pngstruct.h b/src/3rdparty/libpng/pngstruct.h index 93b2b3e..d984461 100644 --- a/src/3rdparty/libpng/pngstruct.h +++ b/src/3rdparty/libpng/pngstruct.h @@ -26,6 +26,7 @@ */ #include "zlib.h" +namespace PrivatePng { struct png_struct_def { #ifdef PNG_SETJMP_SUPPORTED @@ -334,4 +335,5 @@ struct png_struct_def png_uint_32 io_state; #endif }; +} // namespace PrivatePng #endif /* PNGSTRUCT_H */ diff --git a/src/3rdparty/libpng/pngtest.c b/src/3rdparty/libpng/pngtest.c index 9084ada..1a9f8db 100644 --- a/src/3rdparty/libpng/pngtest.c +++ b/src/3rdparty/libpng/pngtest.c @@ -32,13 +32,13 @@ */ #define _POSIX_SOURCE 1 - #include "zlib.h" #include "png.h" /* Copied from pngpriv.h but only used in error messages below. */ #ifndef PNG_ZBUF_SIZE # define PNG_ZBUF_SIZE 8192 #endif + # include <stdio.h> # include <stdlib.h> # include <string.h> @@ -99,8 +99,9 @@ static char tIME_string[PNG_tIME_STRING_LENGTH] = "tIME chunk is not present"; static int verbose = 0; +namespace PrivatePng { int test_one_file PNGARG((PNG_CONST char *inname, PNG_CONST char *outname)); - +} #ifdef __TURBOC__ #include <mem.h> #endif @@ -114,6 +115,7 @@ int test_one_file PNGARG((PNG_CONST char *inname, PNG_CONST char *outname)); # define png_jmpbuf(png_ptr) png_ptr->jmpbuf #endif +namespace PrivatePng { /* Example of using row callbacks to make a simple progress meter */ static int status_pass = 1; static int status_dots_requested = 0; @@ -1795,3 +1797,4 @@ main(int argc, char *argv[]) /* Generate a compiler error if there is an old png.h in the search path. */ typedef png_libpng_version_1_5_4 Your_png_h_is_not_version_1_5_4; +} // namespace PrivatePng diff --git a/src/3rdparty/libpng/pngtrans.c b/src/3rdparty/libpng/pngtrans.c index 6a6908d..2e84686 100644 --- a/src/3rdparty/libpng/pngtrans.c +++ b/src/3rdparty/libpng/pngtrans.c @@ -13,6 +13,8 @@ #include "pngpriv.h" +namespace PrivatePng { + #if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED) #if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED) @@ -676,3 +678,4 @@ png_get_current_pass_number(png_const_structp png_ptr) #endif /* PNG_READ_USER_TRANSFORM_SUPPORTED || PNG_WRITE_USER_TRANSFORM_SUPPORTED */ #endif /* PNG_READ_SUPPORTED || PNG_WRITE_SUPPORTED */ +} // namespace PrivatePng diff --git a/src/3rdparty/libpng/pngwio.c b/src/3rdparty/libpng/pngwio.c index 95ffb34..3dc7378 100644 --- a/src/3rdparty/libpng/pngwio.c +++ b/src/3rdparty/libpng/pngwio.c @@ -20,6 +20,8 @@ #include "pngpriv.h" +namespace PrivatePng { + #ifdef PNG_WRITE_SUPPORTED /* Write the data to whatever output you are using. The default routine @@ -252,3 +254,4 @@ void *png_far_to_near(png_structp png_ptr, png_voidp ptr, int check) # endif #endif #endif /* PNG_WRITE_SUPPORTED */ +} // namespace PrivatePng diff --git a/src/3rdparty/libpng/pngwrite.c b/src/3rdparty/libpng/pngwrite.c index d1af9e8..a945eb8 100644 --- a/src/3rdparty/libpng/pngwrite.c +++ b/src/3rdparty/libpng/pngwrite.c @@ -13,6 +13,8 @@ #include "pngpriv.h" +namespace PrivatePng { + #ifdef PNG_WRITE_SUPPORTED /* Writes all the PNG information. This is the suggested way to use the @@ -1653,3 +1655,4 @@ png_write_png(png_structp png_ptr, png_infop info_ptr, } #endif #endif /* PNG_WRITE_SUPPORTED */ +} // namespace PrivatePng diff --git a/src/3rdparty/libpng/pngwtran.c b/src/3rdparty/libpng/pngwtran.c index 124d708..1b36d01 100644 --- a/src/3rdparty/libpng/pngwtran.c +++ b/src/3rdparty/libpng/pngwtran.c @@ -13,6 +13,8 @@ #include "pngpriv.h" +namespace PrivatePng { + #ifdef PNG_WRITE_SUPPORTED #ifdef PNG_WRITE_TRANSFORMS_SUPPORTED @@ -631,3 +633,4 @@ png_do_write_intrapixel(png_row_infop row_info, png_bytep row) } #endif /* PNG_MNG_FEATURES_SUPPORTED */ #endif /* PNG_WRITE_SUPPORTED */ +} // namespace PrivatePng diff --git a/src/3rdparty/libpng/pngwutil.c b/src/3rdparty/libpng/pngwutil.c index 3ae5ed4..1082350 100644 --- a/src/3rdparty/libpng/pngwutil.c +++ b/src/3rdparty/libpng/pngwutil.c @@ -13,6 +13,8 @@ #include "pngpriv.h" +namespace PrivatePng { + #ifdef PNG_WRITE_SUPPORTED #ifdef PNG_WRITE_INT_FUNCTIONS_SUPPORTED @@ -3177,3 +3179,4 @@ png_write_filtered_row(png_structp png_ptr, png_bytep filtered_row) #endif } #endif /* PNG_WRITE_SUPPORTED */ +} // namespace PrivatePng diff --git a/src/3rdparty/libpng/privatepng.cpp b/src/3rdparty/libpng/privatepng.cpp new file mode 100644 index 0000000..6136447 --- /dev/null +++ b/src/3rdparty/libpng/privatepng.cpp @@ -0,0 +1,16 @@ +#include "png.c" +#include "pngerror.c" +#include "pngget.c" +#include "pngmem.c" +#include "pngpread.c" +#include "pngread.c" +#include "pngrio.c" +#include "pngrtran.c" +#include "pngrutil.c" +#include "pngset.c" +#include "pngtrans.c" +#include "pngwio.c" +#include "pngwrite.c" +#include "pngwtran.c" +#include "pngwutil.c" + diff --git a/src/3rdparty/webkit/Source/JavaScriptCore/jit/JITStubs.cpp b/src/3rdparty/webkit/Source/JavaScriptCore/jit/JITStubs.cpp index a589e11..e2f13e7 100644 --- a/src/3rdparty/webkit/Source/JavaScriptCore/jit/JITStubs.cpp +++ b/src/3rdparty/webkit/Source/JavaScriptCore/jit/JITStubs.cpp @@ -353,7 +353,7 @@ asm volatile ( ".globl " SYMBOL_STRING(ctiVMThrowTrampoline) "\n" HIDE_SYMBOL(ctiVMThrowTrampoline) "\n" SYMBOL_STRING(ctiVMThrowTrampoline) ":" "\n" - "mov.l .L2"SYMBOL_STRING(cti_vm_throw)",r0" "\n" + "mov.l .L2" SYMBOL_STRING(cti_vm_throw) ",r0" "\n" "mov r15, r4" "\n" "mov.l @(r0,r12),r11" "\n" "jsr @r11" "\n" @@ -369,7 +369,7 @@ SYMBOL_STRING(ctiVMThrowTrampoline) ":" "\n" "rts" "\n" "nop" "\n" ".align 2" "\n" - ".L2"SYMBOL_STRING(cti_vm_throw)":.long " SYMBOL_STRING(cti_vm_throw)"@GOT \n" + ".L2" SYMBOL_STRING(cti_vm_throw)":.long " SYMBOL_STRING(cti_vm_throw) "@GOT \n" ); asm volatile ( @@ -1239,7 +1239,7 @@ MSVC_END( END) SYMBOL_STRING(cti_##op) ":" "\n" \ "sts pr, r11" "\n" \ "mov.l r11, @(0x38, r15)" "\n" \ - "mov.l .L2"SYMBOL_STRING(JITStubThunked_##op)",r0" "\n" \ + "mov.l .L2" SYMBOL_STRING(JITStubThunked_##op) ",r0" "\n" \ "mov.l @(r0,r12),r11" "\n" \ "jsr @r11" "\n" \ "nop" "\n" \ @@ -1248,7 +1248,7 @@ MSVC_END( END) "rts" "\n" \ "nop" "\n" \ ".align 2" "\n" \ - ".L2"SYMBOL_STRING(JITStubThunked_##op)":.long " SYMBOL_STRING(JITStubThunked_##op)"@GOT \n" \ + ".L2" SYMBOL_STRING(JITStubThunked_##op) ":.long " SYMBOL_STRING(JITStubThunked_##op)"@GOT \n" \ ); \ rtype JITStubThunked_##op(STUB_ARGS_DECLARATION) #else diff --git a/src/3rdparty/webkit/Source/ThirdParty/ANGLE/src/common/debug.h b/src/3rdparty/webkit/Source/ThirdParty/ANGLE/src/common/debug.h index 2c4ec70..19da378 100644 --- a/src/3rdparty/webkit/Source/ThirdParty/ANGLE/src/common/debug.h +++ b/src/3rdparty/webkit/Source/ThirdParty/ANGLE/src/common/debug.h @@ -20,21 +20,21 @@ namespace gl // A macro to output a trace of a function call and its arguments to the debugging log #if !defined(NDEBUG) && !defined(ANGLE_DISABLE_TRACE) - #define TRACE(message, ...) gl::trace("trace: %s"message"\n", __FUNCTION__, __VA_ARGS__) + #define TRACE(message, ...) gl::trace("trace: %s" message "\n", __FUNCTION__, __VA_ARGS__) #else #define TRACE(...) ((void)0) #endif // A macro to output a function call and its arguments to the debugging log, to denote an item in need of fixing. Will occur even in release mode. -#define FIXME(message, ...) gl::trace("fixme: %s"message"\n", __FUNCTION__, __VA_ARGS__) +#define FIXME(message, ...) gl::trace("fixme: %s" message "\n", __FUNCTION__, __VA_ARGS__) // A macro to output a function call and its arguments to the debugging log, in case of error. Will occur even in release mode. -#define ERR(message, ...) gl::trace("err: %s"message"\n", __FUNCTION__, __VA_ARGS__) +#define ERR(message, ...) gl::trace("err: %s" message "\n", __FUNCTION__, __VA_ARGS__) // A macro asserting a condition and outputting failures to the debug log #define ASSERT(expression) do { \ if(!(expression)) \ - ERR("\t! Assert failed in %s(%d): "#expression"\n", __FUNCTION__, __LINE__); \ + ERR("\t! Assert failed in %s(%d): " #expression "\n", __FUNCTION__, __LINE__); \ assert(expression); \ } while(0) diff --git a/src/3rdparty/webkit/Source/ThirdParty/ANGLE/src/libEGL/libEGL.cpp b/src/3rdparty/webkit/Source/ThirdParty/ANGLE/src/libEGL/libEGL.cpp index 8dfe6e5..98251a1 100644 --- a/src/3rdparty/webkit/Source/ThirdParty/ANGLE/src/libEGL/libEGL.cpp +++ b/src/3rdparty/webkit/Source/ThirdParty/ANGLE/src/libEGL/libEGL.cpp @@ -197,7 +197,7 @@ const char *__stdcall eglQueryString(EGLDisplay dpy, EGLint name) case EGL_VENDOR: return success("TransGaming Inc."); case EGL_VERSION: - return success("1.4 (git-devel "__DATE__" " __TIME__")"); + return success("1.4 (git-devel " __DATE__ " " __TIME__ ")"); } return error(EGL_BAD_PARAMETER, (const char*)NULL); diff --git a/src/3rdparty/webkit/Source/ThirdParty/ANGLE/src/libGLESv2/libGLESv2.cpp b/src/3rdparty/webkit/Source/ThirdParty/ANGLE/src/libGLESv2/libGLESv2.cpp index 543c0d2..21bffa8 100644 --- a/src/3rdparty/webkit/Source/ThirdParty/ANGLE/src/libGLESv2/libGLESv2.cpp +++ b/src/3rdparty/webkit/Source/ThirdParty/ANGLE/src/libGLESv2/libGLESv2.cpp @@ -3214,9 +3214,9 @@ const GLubyte* __stdcall glGetString(GLenum name) case GL_RENDERER: return (GLubyte*)"ANGLE"; case GL_VERSION: - return (GLubyte*)"OpenGL ES 2.0 (git-devel "__DATE__ " " __TIME__")"; + return (GLubyte*)"OpenGL ES 2.0 (git-devel " __DATE__ " " __TIME__ ")"; case GL_SHADING_LANGUAGE_VERSION: - return (GLubyte*)"OpenGL ES GLSL ES 1.00 (git-devel "__DATE__ " " __TIME__")"; + return (GLubyte*)"OpenGL ES GLSL ES 1.00 (git-devel " __DATE__ " " __TIME__ ")"; case GL_EXTENSIONS: return (GLubyte*)((context != NULL) ? context->getExtensionString() : ""); default: diff --git a/src/3rdparty/webkit/Source/WebCore/ChangeLog b/src/3rdparty/webkit/Source/WebCore/ChangeLog index ead97bd..ead97bd 100755..100644 --- a/src/3rdparty/webkit/Source/WebCore/ChangeLog +++ b/src/3rdparty/webkit/Source/WebCore/ChangeLog diff --git a/src/3rdparty/webkit/Source/WebCore/bindings/js/PageScriptDebugServer.cpp b/src/3rdparty/webkit/Source/WebCore/bindings/js/PageScriptDebugServer.cpp index 3d9cb9d..3d9cb9d 100755..100644 --- a/src/3rdparty/webkit/Source/WebCore/bindings/js/PageScriptDebugServer.cpp +++ b/src/3rdparty/webkit/Source/WebCore/bindings/js/PageScriptDebugServer.cpp diff --git a/src/3rdparty/webkit/Source/WebCore/bindings/js/PageScriptDebugServer.h b/src/3rdparty/webkit/Source/WebCore/bindings/js/PageScriptDebugServer.h index 5563e26..5563e26 100755..100644 --- a/src/3rdparty/webkit/Source/WebCore/bindings/js/PageScriptDebugServer.h +++ b/src/3rdparty/webkit/Source/WebCore/bindings/js/PageScriptDebugServer.h diff --git a/src/3rdparty/webkit/Source/WebCore/bindings/js/WorkerScriptDebugServer.cpp b/src/3rdparty/webkit/Source/WebCore/bindings/js/WorkerScriptDebugServer.cpp index 5e2acd2..5e2acd2 100755..100644 --- a/src/3rdparty/webkit/Source/WebCore/bindings/js/WorkerScriptDebugServer.cpp +++ b/src/3rdparty/webkit/Source/WebCore/bindings/js/WorkerScriptDebugServer.cpp diff --git a/src/3rdparty/webkit/Source/WebCore/bindings/js/WorkerScriptDebugServer.h b/src/3rdparty/webkit/Source/WebCore/bindings/js/WorkerScriptDebugServer.h index 40624358..40624358 100755..100644 --- a/src/3rdparty/webkit/Source/WebCore/bindings/js/WorkerScriptDebugServer.h +++ b/src/3rdparty/webkit/Source/WebCore/bindings/js/WorkerScriptDebugServer.h diff --git a/src/3rdparty/webkit/Source/WebCore/html/canvas/DataView.cpp b/src/3rdparty/webkit/Source/WebCore/html/canvas/DataView.cpp index e00443d..e00443d 100755..100644 --- a/src/3rdparty/webkit/Source/WebCore/html/canvas/DataView.cpp +++ b/src/3rdparty/webkit/Source/WebCore/html/canvas/DataView.cpp diff --git a/src/3rdparty/webkit/Source/WebCore/html/canvas/DataView.h b/src/3rdparty/webkit/Source/WebCore/html/canvas/DataView.h index a8aba5c..a8aba5c 100755..100644 --- a/src/3rdparty/webkit/Source/WebCore/html/canvas/DataView.h +++ b/src/3rdparty/webkit/Source/WebCore/html/canvas/DataView.h diff --git a/src/3rdparty/webkit/Source/WebCore/inspector/PageDebuggerAgent.cpp b/src/3rdparty/webkit/Source/WebCore/inspector/PageDebuggerAgent.cpp index 6b86232..6b86232 100755..100644 --- a/src/3rdparty/webkit/Source/WebCore/inspector/PageDebuggerAgent.cpp +++ b/src/3rdparty/webkit/Source/WebCore/inspector/PageDebuggerAgent.cpp diff --git a/src/3rdparty/webkit/Source/WebCore/inspector/PageDebuggerAgent.h b/src/3rdparty/webkit/Source/WebCore/inspector/PageDebuggerAgent.h index 7d6af6c..7d6af6c 100755..100644 --- a/src/3rdparty/webkit/Source/WebCore/inspector/PageDebuggerAgent.h +++ b/src/3rdparty/webkit/Source/WebCore/inspector/PageDebuggerAgent.h diff --git a/src/3rdparty/webkit/Source/WebCore/inspector/WorkerDebuggerAgent.cpp b/src/3rdparty/webkit/Source/WebCore/inspector/WorkerDebuggerAgent.cpp index 14bde38..14bde38 100755..100644 --- a/src/3rdparty/webkit/Source/WebCore/inspector/WorkerDebuggerAgent.cpp +++ b/src/3rdparty/webkit/Source/WebCore/inspector/WorkerDebuggerAgent.cpp diff --git a/src/3rdparty/webkit/Source/WebCore/inspector/WorkerDebuggerAgent.h b/src/3rdparty/webkit/Source/WebCore/inspector/WorkerDebuggerAgent.h index e88fd89..e88fd89 100755..100644 --- a/src/3rdparty/webkit/Source/WebCore/inspector/WorkerDebuggerAgent.h +++ b/src/3rdparty/webkit/Source/WebCore/inspector/WorkerDebuggerAgent.h diff --git a/src/3rdparty/webkit/Source/WebCore/inspector/front-end/CSSKeywordCompletions.js b/src/3rdparty/webkit/Source/WebCore/inspector/front-end/CSSKeywordCompletions.js index de2072a..de2072a 100755..100644 --- a/src/3rdparty/webkit/Source/WebCore/inspector/front-end/CSSKeywordCompletions.js +++ b/src/3rdparty/webkit/Source/WebCore/inspector/front-end/CSSKeywordCompletions.js diff --git a/src/3rdparty/webkit/Source/WebCore/inspector/front-end/CookieParser.js b/src/3rdparty/webkit/Source/WebCore/inspector/front-end/CookieParser.js index f96be0b..f96be0b 100755..100644 --- a/src/3rdparty/webkit/Source/WebCore/inspector/front-end/CookieParser.js +++ b/src/3rdparty/webkit/Source/WebCore/inspector/front-end/CookieParser.js diff --git a/src/3rdparty/webkit/Source/WebCore/inspector/front-end/ExtensionAPISchema.json b/src/3rdparty/webkit/Source/WebCore/inspector/front-end/ExtensionAPISchema.json index 1319cdf..1319cdf 100755..100644 --- a/src/3rdparty/webkit/Source/WebCore/inspector/front-end/ExtensionAPISchema.json +++ b/src/3rdparty/webkit/Source/WebCore/inspector/front-end/ExtensionAPISchema.json diff --git a/src/3rdparty/webkit/Source/WebCore/inspector/front-end/SearchController.js b/src/3rdparty/webkit/Source/WebCore/inspector/front-end/SearchController.js index d0f9cb4..d0f9cb4 100755..100644 --- a/src/3rdparty/webkit/Source/WebCore/inspector/front-end/SearchController.js +++ b/src/3rdparty/webkit/Source/WebCore/inspector/front-end/SearchController.js diff --git a/src/3rdparty/webkit/Source/WebCore/inspector/front-end/Toolbar.js b/src/3rdparty/webkit/Source/WebCore/inspector/front-end/Toolbar.js index 61fa2f7..61fa2f7 100755..100644 --- a/src/3rdparty/webkit/Source/WebCore/inspector/front-end/Toolbar.js +++ b/src/3rdparty/webkit/Source/WebCore/inspector/front-end/Toolbar.js diff --git a/src/3rdparty/webkit/Source/WebCore/platform/sql/SQLiteFileSystem.cpp b/src/3rdparty/webkit/Source/WebCore/platform/sql/SQLiteFileSystem.cpp index 362005c..c4ca6aa 100644 --- a/src/3rdparty/webkit/Source/WebCore/platform/sql/SQLiteFileSystem.cpp +++ b/src/3rdparty/webkit/Source/WebCore/platform/sql/SQLiteFileSystem.cpp @@ -77,10 +77,10 @@ String SQLiteFileSystem::getFileNameForNewDatabase(const String& dbDir, const St String fileName; do { ++seq; - fileName = pathByAppendingComponent(dbDir, String::format("%016"PRIx64".db", seq)); + fileName = pathByAppendingComponent(dbDir, String::format("%016" PRIx64 ".db", seq)); } while (fileExists(fileName)); - return String::format("%016"PRIx64".db", seq); + return String::format("%016" PRIx64 ".db", seq); } String SQLiteFileSystem::appendDatabaseFileNameToPath(const String& path, const String& fileName) diff --git a/src/3rdparty/webkit/Source/WebCore/svg/SVGDocumentExtensions.cpp b/src/3rdparty/webkit/Source/WebCore/svg/SVGDocumentExtensions.cpp index 4b339ca..4b339ca 100755..100644 --- a/src/3rdparty/webkit/Source/WebCore/svg/SVGDocumentExtensions.cpp +++ b/src/3rdparty/webkit/Source/WebCore/svg/SVGDocumentExtensions.cpp diff --git a/src/3rdparty/webkit/Source/WebCore/svg/SVGDocumentExtensions.h b/src/3rdparty/webkit/Source/WebCore/svg/SVGDocumentExtensions.h index 8ad44f8..8ad44f8 100755..100644 --- a/src/3rdparty/webkit/Source/WebCore/svg/SVGDocumentExtensions.h +++ b/src/3rdparty/webkit/Source/WebCore/svg/SVGDocumentExtensions.h diff --git a/src/3rdparty/webkit/Source/WebCore/svg/SVGStyledElement.cpp b/src/3rdparty/webkit/Source/WebCore/svg/SVGStyledElement.cpp index 0693eb0..0693eb0 100755..100644 --- a/src/3rdparty/webkit/Source/WebCore/svg/SVGStyledElement.cpp +++ b/src/3rdparty/webkit/Source/WebCore/svg/SVGStyledElement.cpp diff --git a/src/3rdparty/webkit/Source/WebCore/svg/SVGStyledElement.h b/src/3rdparty/webkit/Source/WebCore/svg/SVGStyledElement.h index fdad347..fdad347 100755..100644 --- a/src/3rdparty/webkit/Source/WebCore/svg/SVGStyledElement.h +++ b/src/3rdparty/webkit/Source/WebCore/svg/SVGStyledElement.h diff --git a/src/3rdparty/webkit/Source/WebKit/qt/QtWebKit.pro b/src/3rdparty/webkit/Source/WebKit/qt/QtWebKit.pro index 197aa98..4161832 100644 --- a/src/3rdparty/webkit/Source/WebKit/qt/QtWebKit.pro +++ b/src/3rdparty/webkit/Source/WebKit/qt/QtWebKit.pro @@ -123,7 +123,7 @@ symbian { webkitlibs.pkg_prerules = vendorinfo webkitbackup.sources = symbian/backup_registration.xml - webkitbackup.path = /private/10202D56/import/packages/$$replace(TARGET.UID3, 0x,) + webkitbackup.path = /private/10202d56/import/packages/$$replace(TARGET.UID3, 0x,) contains(QT_CONFIG, declarative) { declarativeImport.sources = $$QT_BUILD_TREE/imports/QtWebKit/qmlwebkitplugin$${QT_LIBINFIX}.dll diff --git a/src/3rdparty/webkit/Source/WebKit2/UIProcess/win/WebUndoClient.h b/src/3rdparty/webkit/Source/WebKit2/UIProcess/win/WebUndoClient.h index b7fdc15..b7fdc15 100755..100644 --- a/src/3rdparty/webkit/Source/WebKit2/UIProcess/win/WebUndoClient.h +++ b/src/3rdparty/webkit/Source/WebKit2/UIProcess/win/WebUndoClient.h diff --git a/src/3rdparty/webkit/Source/WebKit2/win/fsVideoAudioVolumeHigh.png b/src/3rdparty/webkit/Source/WebKit2/win/fsVideoAudioVolumeHigh.png Binary files differindex d04df37..d04df37 100755..100644 --- a/src/3rdparty/webkit/Source/WebKit2/win/fsVideoAudioVolumeHigh.png +++ b/src/3rdparty/webkit/Source/WebKit2/win/fsVideoAudioVolumeHigh.png diff --git a/src/3rdparty/webkit/Source/WebKit2/win/fsVideoAudioVolumeLow.png b/src/3rdparty/webkit/Source/WebKit2/win/fsVideoAudioVolumeLow.png Binary files differindex e824a21..e824a21 100755..100644 --- a/src/3rdparty/webkit/Source/WebKit2/win/fsVideoAudioVolumeLow.png +++ b/src/3rdparty/webkit/Source/WebKit2/win/fsVideoAudioVolumeLow.png diff --git a/src/3rdparty/webkit/Source/WebKit2/win/fsVideoExitFullscreen.png b/src/3rdparty/webkit/Source/WebKit2/win/fsVideoExitFullscreen.png Binary files differindex 01ce692..01ce692 100755..100644 --- a/src/3rdparty/webkit/Source/WebKit2/win/fsVideoExitFullscreen.png +++ b/src/3rdparty/webkit/Source/WebKit2/win/fsVideoExitFullscreen.png diff --git a/src/3rdparty/webkit/Source/WebKit2/win/fsVideoPause.png b/src/3rdparty/webkit/Source/WebKit2/win/fsVideoPause.png Binary files differindex b98fb36..b98fb36 100755..100644 --- a/src/3rdparty/webkit/Source/WebKit2/win/fsVideoPause.png +++ b/src/3rdparty/webkit/Source/WebKit2/win/fsVideoPause.png diff --git a/src/3rdparty/webkit/Source/WebKit2/win/fsVideoPlay.png b/src/3rdparty/webkit/Source/WebKit2/win/fsVideoPlay.png Binary files differindex 035aeb2..035aeb2 100755..100644 --- a/src/3rdparty/webkit/Source/WebKit2/win/fsVideoPlay.png +++ b/src/3rdparty/webkit/Source/WebKit2/win/fsVideoPlay.png diff --git a/src/corelib/global/qglobal.cpp b/src/corelib/global/qglobal.cpp index 84d68e5..3675fc7 100644 --- a/src/corelib/global/qglobal.cpp +++ b/src/corelib/global/qglobal.cpp @@ -2207,16 +2207,13 @@ void qt_message_output(QtMsgType msgType, const char *buf) OutputDebugString(reinterpret_cast<const wchar_t *> (fstr.utf16())); #elif defined(Q_OS_SYMBIAN) // RDebug::Print has a cap of 256 characters so break it up - _LIT(format, "[Qt Message] %S"); - const int maxBlockSize = 256 - ((const TDesC &)format).Length(); + char format[] = "[Qt Message] %S"; + const int maxBlockSize = 256 - sizeof(format); const TPtrC8 ptr(reinterpret_cast<const TUint8*>(buf)); - HBufC* hbuffer = HBufC::New(qMin(maxBlockSize, ptr.Length())); - Q_CHECK_PTR(hbuffer); - for (int i = 0; i < ptr.Length(); i += hbuffer->Length()) { - hbuffer->Des().Copy(ptr.Mid(i, qMin(maxBlockSize, ptr.Length()-i))); - RDebug::Print(format, hbuffer); + for (int i = 0; i < ptr.Length(); i += maxBlockSize) { + TPtrC8 part(ptr.Mid(i, qMin(maxBlockSize, ptr.Length()-i))); + RDebug::Printf(format, &part); } - delete hbuffer; #else fprintf(stderr, "%s\n", buf); fflush(stderr); diff --git a/src/corelib/io/qfile.cpp b/src/corelib/io/qfile.cpp index cdee7ce..09d0c58 100644 --- a/src/corelib/io/qfile.cpp +++ b/src/corelib/io/qfile.cpp @@ -824,8 +824,7 @@ QFile::rename(const QString &oldName, const QString &newName) \note To create a valid link on Windows, \a linkName must have a \c{.lnk} file extension. - \note On Symbian, no link is created and false is returned if fileName() - currently specifies a directory. + \note Symbian filesystem does not support links. \sa setFileName() */ diff --git a/src/corelib/kernel/qcore_symbian_p.cpp b/src/corelib/kernel/qcore_symbian_p.cpp index 4f953a7..65ec3fe 100644 --- a/src/corelib/kernel/qcore_symbian_p.cpp +++ b/src/corelib/kernel/qcore_symbian_p.cpp @@ -246,6 +246,38 @@ RConnection* QSymbianSocketManager::defaultConnection() const return iDefaultConnection; } +void QSymbianSocketManager::addActiveConnection(TUint32 identifier) +{ + QMutexLocker l(&iMutex); + activeConnectionsMap[identifier]++; +#ifdef QT_BEARERMGMT_SYMBIAN_DEBUG + qDebug() << "addActiveConnection" << identifier << activeConnectionsMap[identifier]; +#endif +} + +void QSymbianSocketManager::removeActiveConnection(TUint32 identifier) +{ + QMutexLocker l(&iMutex); + int& val(activeConnectionsMap[identifier]); + Q_ASSERT(val > 0); +#ifdef QT_BEARERMGMT_SYMBIAN_DEBUG + qDebug() << "removeActiveConnection" << identifier << val - 1; +#endif + if (val <= 1) + activeConnectionsMap.remove(identifier); + else + val--; +} + +QList<TUint32> QSymbianSocketManager::activeConnections() const +{ + QMutexLocker l(&iMutex); +#ifdef QT_BEARERMGMT_SYMBIAN_DEBUG + qDebug() << "activeConnections" << activeConnectionsMap.keys(); +#endif + return activeConnectionsMap.keys(); +} + Q_GLOBAL_STATIC(QSymbianSocketManager, qt_symbianSocketManager); QSymbianSocketManager& QSymbianSocketManager::instance() diff --git a/src/corelib/kernel/qcore_symbian_p.h b/src/corelib/kernel/qcore_symbian_p.h index a8f576d..6176ab5 100644 --- a/src/corelib/kernel/qcore_symbian_p.h +++ b/src/corelib/kernel/qcore_symbian_p.h @@ -247,6 +247,27 @@ public: /*! \internal + Add an opened connection to the active list + \param an open connection + */ + void addActiveConnection(TUint32 identifier); + + /*! + \internal + Remove a connection from the active list + \param a closed connection + */ + void removeActiveConnection(TUint32 identifier); + + /*! + \internal + Add an opened connection to the active list + \param an open connection + */ + QList<TUint32> activeConnections() const; + + /*! + \internal Gets a reference to the singleton socket manager */ static QSymbianSocketManager& instance(); @@ -258,6 +279,7 @@ private: int iNextSocket; QHash<QHashableSocket, int> socketMap; QHash<int, RSocket> reverseSocketMap; + QHash<TUint32, int> activeConnectionsMap; mutable QMutex iMutex; RSocketServ iSocketServ; RConnection *iDefaultConnection; diff --git a/src/corelib/kernel/qeventdispatcher_symbian.cpp b/src/corelib/kernel/qeventdispatcher_symbian.cpp index ea466f5..da6f021 100644 --- a/src/corelib/kernel/qeventdispatcher_symbian.cpp +++ b/src/corelib/kernel/qeventdispatcher_symbian.cpp @@ -749,7 +749,7 @@ public: ObjectRun, ObjectDelayed }; - static RunResult RunMarkedIfReady(TInt &runPriority, TInt minimumPriority); + static RunResult RunMarkedIfReady(TInt &runPriority, TInt minimumPriority, QEventDispatcherSymbian *dispatcher); static bool UseRRActiveScheduler(); private: @@ -808,7 +808,7 @@ void QtRRActiveScheduler::MarkReadyToRun() } } -QtRRActiveScheduler::RunResult QtRRActiveScheduler::RunMarkedIfReady(TInt &runPriority, TInt minimumPriority) +QtRRActiveScheduler::RunResult QtRRActiveScheduler::RunMarkedIfReady(TInt &runPriority, TInt minimumPriority, QEventDispatcherSymbian *dispatcher) { RunResult result = NothingFound; TInt error=KErrNone; @@ -824,12 +824,12 @@ QtRRActiveScheduler::RunResult QtRRActiveScheduler::RunMarkedIfReady(TInt &runPr runPriority = active->Priority(); dataAccess->iStatus.iFlags&=~TRequestStatusAccess::ERequestActiveFlags; int vptr = *(int*)active; // vptr can be used to identify type when debugging leaves - TRAP(error, active->RunL()); + TRAP(error, QT_TRYCATCH_ERROR(error, active->RunL())); if (error!=KErrNone) error=active->RunError(error); if (error) { qWarning("Active object (ptr=0x%08x, vptr=0x%08x) leave: %i\n", active, vptr, error); - pS->Error(error); + dispatcher->activeObjectError(error); } return ObjectRun; } @@ -966,13 +966,15 @@ QEventDispatcherSymbian::QEventDispatcherSymbian(QObject *parent) m_wakeUpDone(0), m_iterationCount(0), m_insideTimerEvent(false), - m_noSocketEvents(false) + m_noSocketEvents(false), + m_oomErrorCount(0) { #ifdef QT_SYMBIAN_PRIORITY_DROP m_delay = baseDelay; m_avgEventTime = 0; idleDetectorThread(); #endif + m_oomErrorTimer.start(); } QEventDispatcherSymbian::~QEventDispatcherSymbian() @@ -1098,7 +1100,7 @@ bool QEventDispatcherSymbian::processEvents ( QEventLoop::ProcessEventsFlags fla // Standard or above priority AOs are scheduled round robin. // Lower priority AOs can only run if nothing higher priority has run. int runPriority = minPriority; - handledSymbianEvent = QtRRActiveScheduler::RunMarkedIfReady(runPriority, minPriority); + handledSymbianEvent = QtRRActiveScheduler::RunMarkedIfReady(runPriority, minPriority, this); minPriority = qMin(runPriority, int(CActive::EPriorityStandard)); } else { TInt error; @@ -1396,6 +1398,19 @@ QList<QEventDispatcherSymbian::TimerInfo> QEventDispatcherSymbian::registeredTim return list; } +void QEventDispatcherSymbian::activeObjectError(int error) +{ + if (error == KErrNoMemory) { + // limit the number of reported out of memory errors, as the disappearance of the warning + // dialog can trigger further OOM errors causing a loop. + if (m_oomErrorTimer.restart() > 60000) // 1 minute + m_oomErrorCount = 0; + if (m_oomErrorCount++ >= 5) + return; + } + CActiveScheduler::Current()->Error(error); +} + /* * This active scheduler class implements a simple report and continue policy, for Symbian OS leaves * or exceptions from Qt that fall back to the scheduler. diff --git a/src/corelib/kernel/qeventdispatcher_symbian_p.h b/src/corelib/kernel/qeventdispatcher_symbian_p.h index 01f5ab1..869fe31 100644 --- a/src/corelib/kernel/qeventdispatcher_symbian_p.h +++ b/src/corelib/kernel/qeventdispatcher_symbian_p.h @@ -264,6 +264,8 @@ public: static void RequestComplete(TRequestStatus *&status, TInt reason); static void RequestComplete(RThread &threadHandle, TRequestStatus *&status, TInt reason); + void activeObjectError(int error); + private: bool sendPostedEvents(); bool sendDeferredSocketEvents(); @@ -294,6 +296,8 @@ private: int m_delay; int m_avgEventTime; QElapsedTimer m_lastIdleRequestTimer; + int m_oomErrorCount; + QElapsedTimer m_oomErrorTimer; }; #ifdef QT_DEBUG diff --git a/src/corelib/kernel/qobjectdefs.h b/src/corelib/kernel/qobjectdefs.h index efce4d5..8cfc61a 100644 --- a/src/corelib/kernel/qobjectdefs.h +++ b/src/corelib/kernel/qobjectdefs.h @@ -219,7 +219,7 @@ Q_CORE_EXPORT const char *qFlagLocation(const char *method); #define QTOSTRING_HELPER(s) #s #define QTOSTRING(s) QTOSTRING_HELPER(s) #ifndef QT_NO_DEBUG -# define QLOCATION "\0"__FILE__":"QTOSTRING(__LINE__) +# define QLOCATION "\0" __FILE__ ":" QTOSTRING(__LINE__) # ifndef QT_NO_KEYWORDS # define METHOD(a) qFlagLocation("0"#a QLOCATION) # endif diff --git a/src/corelib/plugin/qlibrary.cpp b/src/corelib/plugin/qlibrary.cpp index f1ed8e4..e0e2b8d 100644 --- a/src/corelib/plugin/qlibrary.cpp +++ b/src/corelib/plugin/qlibrary.cpp @@ -789,7 +789,7 @@ bool QLibraryPrivate::isPlugin(QSettings *settings) // An exception was thrown when calling qt_plugin_query_verification_data(). // This usually happens when plugin is compiled with the /clr compiler flag, // & will only work if the dependencies are loaded & DLLMain() is called. - // LoadLibrary() will do this, try once with this & if it fails dont load. + // LoadLibrary() will do this, try once with this & if it fails don't load. retryLoadLibrary = !retryLoadLibrary; } #endif diff --git a/src/corelib/plugin/qplugin.h b/src/corelib/plugin/qplugin.h index 40e6e66..559822a 100644 --- a/src/corelib/plugin/qplugin.h +++ b/src/corelib/plugin/qplugin.h @@ -115,10 +115,10 @@ void Q_CORE_EXPORT qRegisterStaticPluginInstanceFunction(QtPluginInstanceFunctio # endif # define Q_PLUGIN_VERIFICATION_DATA \ static const char qt_plugin_verification_data[] = \ - "pattern=""QT_PLUGIN_VERIFICATION_DATA""\n" \ - "version="QT_VERSION_STR"\n" \ - "debug="QPLUGIN_DEBUG_STR"\n" \ - "buildkey="QT_BUILD_KEY; + "pattern=QT_PLUGIN_VERIFICATION_DATA\n" \ + "version=" QT_VERSION_STR "\n" \ + "debug=" QPLUGIN_DEBUG_STR "\n" \ + "buildkey=" QT_BUILD_KEY; # if defined (Q_OF_ELF) && defined (Q_CC_GNU) # define Q_PLUGIN_VERIFICATION_SECTION \ diff --git a/src/dbus/qdbusdemarshaller.cpp b/src/dbus/qdbusdemarshaller.cpp index d9bb5b5..4103552 100644 --- a/src/dbus/qdbusdemarshaller.cpp +++ b/src/dbus/qdbusdemarshaller.cpp @@ -48,10 +48,28 @@ QT_BEGIN_NAMESPACE template <typename T> static inline T qIterGet(DBusMessageIter *it) { - T t; - q_dbus_message_iter_get_basic(it, &t); + // Use a union of expected and largest type q_dbus_message_iter_get_basic + // will return to ensure reading the wrong basic type does not result in + // stack overwrite + union { + // The value to be extracted + T t; + // Largest type that q_dbus_message_iter_get_basic will return + // according to dbus_message_iter_get_basic API documentation + dbus_uint64_t maxValue; + // A pointer to ensure no stack overwrite in case there is a platform + // where sizeof(void*) > sizeof(dbus_uint64_t) + void* ptr; + } value; + + // Initialize the value in case a narrower type is extracted to it. + // Note that the result of extracting a narrower type in place of a wider + // one and vice-versa will be platform-dependent. + value.t = T(); + + q_dbus_message_iter_get_basic(it, &value); q_dbus_message_iter_next(it); - return t; + return value.t; } QDBusDemarshaller::~QDBusDemarshaller() diff --git a/src/declarative/debugger/qdeclarativedebugserver.cpp b/src/declarative/debugger/qdeclarativedebugserver.cpp index 3e0c326..05f63c7 100644 --- a/src/declarative/debugger/qdeclarativedebugserver.cpp +++ b/src/declarative/debugger/qdeclarativedebugserver.cpp @@ -96,7 +96,7 @@ public: private: // private slot void _q_deliverMessage(const QString &serviceName, const QByteArray &message); - static QDeclarativeDebugServerConnection *loadConnectionPlugin(const QString &pluginName); + static QDeclarativeDebugServerConnection *loadConnectionPlugin(QPluginLoader *loader, const QString &pluginName); }; QDeclarativeDebugServerPrivate::QDeclarativeDebugServerPrivate() : @@ -120,7 +120,7 @@ void QDeclarativeDebugServerPrivate::advertisePlugins() } QDeclarativeDebugServerConnection *QDeclarativeDebugServerPrivate::loadConnectionPlugin( - const QString &pluginName) + QPluginLoader *loader, const QString &pluginName) { #ifndef QT_NO_LIBRARY QStringList pluginCandidates; @@ -137,17 +137,17 @@ QDeclarativeDebugServerConnection *QDeclarativeDebugServerPrivate::loadConnectio } foreach (const QString &pluginPath, pluginCandidates) { - QPluginLoader loader(pluginPath); - if (!loader.load()) { + loader->setFileName(pluginPath); + if (!loader->load()) { continue; } QDeclarativeDebugServerConnection *connection = 0; - if (QObject *instance = loader.instance()) + if (QObject *instance = loader->instance()) connection = qobject_cast<QDeclarativeDebugServerConnection*>(instance); if (connection) return connection; - loader.unload(); + loader->unload(); } #endif return 0; @@ -202,8 +202,9 @@ QDeclarativeDebugServer *QDeclarativeDebugServer::instance() if (ok) { server = new QDeclarativeDebugServer(); + QPluginLoader *loader = new QPluginLoader(server); QDeclarativeDebugServerConnection *connection - = QDeclarativeDebugServerPrivate::loadConnectionPlugin(pluginName); + = QDeclarativeDebugServerPrivate::loadConnectionPlugin(loader, pluginName); if (connection) { server->d_func()->connection = connection; diff --git a/src/declarative/graphicsitems/qdeclarativetext.cpp b/src/declarative/graphicsitems/qdeclarativetext.cpp index 20e4eef..684dc5a 100644 --- a/src/declarative/graphicsitems/qdeclarativetext.cpp +++ b/src/declarative/graphicsitems/qdeclarativetext.cpp @@ -289,7 +289,7 @@ void QDeclarativeTextPrivate::updateSize() doc->setTextWidth(-1); naturalWidth = doc->idealWidth(); } - if (wrapMode != QDeclarativeText::NoWrap && q->widthValid()) + if (q->widthValid()) doc->setTextWidth(q->width()); else doc->setTextWidth(doc->idealWidth()); // ### Text does not align if width is not set (QTextDoc bug) diff --git a/src/declarative/qml/qdeclarativecomponent.cpp b/src/declarative/qml/qdeclarativecomponent.cpp index f423f50..0d892a2 100644 --- a/src/declarative/qml/qdeclarativecomponent.cpp +++ b/src/declarative/qml/qdeclarativecomponent.cpp @@ -936,50 +936,37 @@ void QDeclarativeComponentPrivate::beginDeferred(QDeclarativeEnginePrivate *engi void QDeclarativeComponentPrivate::complete(QDeclarativeEnginePrivate *enginePriv, ConstructionState *state) { if (state->completePending) { - - for (int ii = 0; ii < state->bindValues.count(); ++ii) { - QDeclarativeEnginePrivate::SimpleList<QDeclarativeAbstractBinding> bv = - state->bindValues.at(ii); - for (int jj = 0; jj < bv.count; ++jj) { - if(bv.at(jj)) { - // XXX akennedy - bv.at(jj)->m_mePtr = 0; - bv.at(jj)->setEnabled(true, QDeclarativePropertyPrivate::BypassInterceptor | - QDeclarativePropertyPrivate::DontRemoveBinding); + QT_TRY { + for (int ii = 0; ii < state->bindValues.count(); ++ii) { + QDeclarativeEnginePrivate::SimpleList<QDeclarativeAbstractBinding> bv = + state->bindValues.at(ii); + for (int jj = 0; jj < bv.count; ++jj) { + if(bv.at(jj)) { + // XXX akennedy + bv.at(jj)->m_mePtr = 0; + bv.at(jj)->setEnabled(true, QDeclarativePropertyPrivate::BypassInterceptor | + QDeclarativePropertyPrivate::DontRemoveBinding); + } } + QDeclarativeEnginePrivate::clear(bv); } - QDeclarativeEnginePrivate::clear(bv); - } - for (int ii = 0; ii < state->parserStatus.count(); ++ii) { - QDeclarativeEnginePrivate::SimpleList<QDeclarativeParserStatus> ps = - state->parserStatus.at(ii); + for (int ii = 0; ii < state->parserStatus.count(); ++ii) { + QDeclarativeEnginePrivate::SimpleList<QDeclarativeParserStatus> ps = + state->parserStatus.at(ii); - for (int jj = ps.count - 1; jj >= 0; --jj) { - QDeclarativeParserStatus *status = ps.at(jj); - if (status && status->d) { - status->d = 0; - status->componentComplete(); + for (int jj = ps.count - 1; jj >= 0; --jj) { + QDeclarativeParserStatus *status = ps.at(jj); + if (status && status->d) { + status->d = 0; + status->componentComplete(); + } } + QDeclarativeEnginePrivate::clear(ps); } - QDeclarativeEnginePrivate::clear(ps); - } - - for (int ii = 0; ii < state->finalizedParserStatus.count(); ++ii) { - QPair<QDeclarativeGuard<QObject>, int> status = state->finalizedParserStatus.at(ii); - QObject *obj = status.first; - if (obj) { - void *args[] = { 0 }; - QMetaObject::metacall(obj, QMetaObject::InvokeMetaMethod, - status.second, args); - } - } - //componentComplete() can register additional finalization objects - //that are then never handled. Handle them manually here. - if (1 == enginePriv->inProgressCreations) { - for (int ii = 0; ii < enginePriv->finalizedParserStatus.count(); ++ii) { - QPair<QDeclarativeGuard<QObject>, int> status = enginePriv->finalizedParserStatus.at(ii); + for (int ii = 0; ii < state->finalizedParserStatus.count(); ++ii) { + QPair<QDeclarativeGuard<QObject>, int> status = state->finalizedParserStatus.at(ii); QObject *obj = status.first; if (obj) { void *args[] = { 0 }; @@ -987,17 +974,38 @@ void QDeclarativeComponentPrivate::complete(QDeclarativeEnginePrivate *enginePri status.second, args); } } - enginePriv->finalizedParserStatus.clear(); - } - while (state->componentAttached) { - QDeclarativeComponentAttached *a = state->componentAttached; - a->rem(); - QDeclarativeData *d = QDeclarativeData::get(a->parent()); - Q_ASSERT(d); - Q_ASSERT(d->context); - a->add(&d->context->componentAttached); - emit a->completed(); + //componentComplete() can register additional finalization objects + //that are then never handled. Handle them manually here. + if (1 == enginePriv->inProgressCreations) { + for (int ii = 0; ii < enginePriv->finalizedParserStatus.count(); ++ii) { + QPair<QDeclarativeGuard<QObject>, int> status = enginePriv->finalizedParserStatus.at(ii); + QObject *obj = status.first; + if (obj) { + void *args[] = { 0 }; + QMetaObject::metacall(obj, QMetaObject::InvokeMetaMethod, + status.second, args); + } + } + enginePriv->finalizedParserStatus.clear(); + } + + while (state->componentAttached) { + QDeclarativeComponentAttached *a = state->componentAttached; + a->rem(); + QDeclarativeData *d = QDeclarativeData::get(a->parent()); + Q_ASSERT(d); + Q_ASSERT(d->context); + a->add(&d->context->componentAttached); + emit a->completed(); + } + } QT_CATCH(const std::exception&) { + state->bindValues.clear(); + state->parserStatus.clear(); + state->finalizedParserStatus.clear(); + state->completePending = false; + enginePriv->inProgressCreations--; + QT_RETHROW; } state->bindValues.clear(); diff --git a/src/declarative/qml/qdeclarativeengine.cpp b/src/declarative/qml/qdeclarativeengine.cpp index 1417b78..89a9809 100644 --- a/src/declarative/qml/qdeclarativeengine.cpp +++ b/src/declarative/qml/qdeclarativeengine.cpp @@ -1202,8 +1202,8 @@ void QDeclarativeData::setBindingBit(QObject *obj, int bit) int arraySize = (props + 31) / 32; int oldArraySize = bindingBitsSize / 32; - bindingBits = (quint32 *)realloc(bindingBits, - arraySize * sizeof(quint32)); + bindingBits = (quint32 *)q_check_ptr(realloc(bindingBits, + arraySize * sizeof(quint32))); memset(bindingBits + oldArraySize, 0x00, diff --git a/src/declarative/qml/qpodvector_p.h b/src/declarative/qml/qpodvector_p.h index 7b50463..a055d17 100644 --- a/src/declarative/qml/qpodvector_p.h +++ b/src/declarative/qml/qpodvector_p.h @@ -89,7 +89,7 @@ public: void insert(int idx, const T &v) { if (m_count == m_capacity) { m_capacity += Increment; - m_data = (T *)realloc(m_data, m_capacity * sizeof(T)); + m_data = (T *)q_check_ptr(realloc(m_data, m_capacity * sizeof(T))); } int moveCount = m_count - idx; if (moveCount) @@ -101,7 +101,7 @@ public: void reserve(int count) { if (count >= m_capacity) { m_capacity = (count + (Increment-1)) & (0xFFFFFFFF - Increment + 1); - m_data = (T *)realloc(m_data, m_capacity * sizeof(T)); + m_data = (T *)q_check_ptr(realloc(m_data, m_capacity * sizeof(T))); } } diff --git a/src/gui/graphicsview/qgraphicslayoutitem.cpp b/src/gui/graphicsview/qgraphicslayoutitem.cpp index 0631df8..5a2d051 100644 --- a/src/gui/graphicsview/qgraphicslayoutitem.cpp +++ b/src/gui/graphicsview/qgraphicslayoutitem.cpp @@ -133,15 +133,81 @@ void QGraphicsLayoutItemPrivate::init() /*! \internal + + effectiveSizeHint has a quirky behavior, one of the quirkinesses is when the hfw function is + combined with user-specified min/max sizes. The input to hfw function (e.g width) must be within + the min/max width constraint, and the output must be within the min/max height. This sets up a + loose dependency between minimum width and maximum height (or minimum height, depending on the + type of hfw function). Note that its only the concrete subclass that implements that hfw + function that knows if this dependency means that the height will increase or decrease when the + width is increased. + + The application should try to ensure that the user-defined sizes are within the range so that + they don't conflict with the hfw function. + + Suppose, for instance that the hfw function is: + + height = 2000/width + + and the item has these user-defined sizes: + + min ( 5, 5) + pref(100, 10) + max (500,100) + + what is the return value if one calls item->effectiveSizeHint(Qt::MinimumSize, QSizeF(10, -1)); ? + The sizeHint() function would return QSizeF(10, 200), but it would be bounded down to 100 due + to the max value, so it would return (10, 100). This is not what the item expects, since it + really wants that its hfw is respected. If this is a label with wrapped text, this would most + likely lead to that some text is clipped. This is certainly not what the app developer wants. + Now, it would be better if the user changed those constraints to match the hfw function: + + min ( 20, 5) + pref(100, 10) + max (500,100) + + here, it says that the width cannot be smaller than 20. This is because if it becomes smaller + than 20 the result of the hfw function would violate the max height (100). + + However, there is a similar problem if the width passed to the hfw function reaches *max* width: + + the sizeHint() function would now return QSizeF(500, 4), but 4 is smaller than the minimum + height (5), so effectiveSizeHint() would return (500, 5), which would leave too much space. + In this case, setting the max width to 400 fixes the problem: + + min ( 20, 5) + pref(100, 10) + max (400,100) + + + The implementor of a hfw widget must be aware of this when sizeHint() is reimplemented, so that + the default min and max sizes works sensible. (unfortunately the implementor does not have the + control over user-set values). + */ QSizeF *QGraphicsLayoutItemPrivate::effectiveSizeHints(const QSizeF &constraint) const { Q_Q(const QGraphicsLayoutItem); QSizeF *sizeHintCache; const bool hasConstraint = constraint.width() >= 0 || constraint.height() >= 0; + QSizeF adjustedConstraint = constraint; if (hasConstraint) { if (!sizeHintWithConstraintCacheDirty && constraint == cachedConstraint) return cachedSizeHintsWithConstraints; + + const QSizeF *hintsWithoutConstraint = effectiveSizeHints(QSizeF(-1,-1)); + + if (adjustedConstraint.width() >= 0) + adjustedConstraint.setWidth( qBound( hintsWithoutConstraint[Qt::MinimumSize].width(), + adjustedConstraint.width(), + hintsWithoutConstraint[Qt::MaximumSize].width())); + if (adjustedConstraint.height() >= 0) + adjustedConstraint.setHeight( qBound( hintsWithoutConstraint[Qt::MinimumSize].height(), + adjustedConstraint.height(), + hintsWithoutConstraint[Qt::MaximumSize].height())); + + if (!sizeHintWithConstraintCacheDirty && adjustedConstraint == cachedConstraint) + return cachedSizeHintsWithConstraints; sizeHintCache = cachedSizeHintsWithConstraints; } else { if (!sizeHintCacheDirty) @@ -150,7 +216,7 @@ QSizeF *QGraphicsLayoutItemPrivate::effectiveSizeHints(const QSizeF &constraint) } for (int i = 0; i < Qt::NSizeHints; ++i) { - sizeHintCache[i] = constraint; + sizeHintCache[i] = adjustedConstraint; if (userSizeHints) combineSize(sizeHintCache[i], userSizeHints[i]); } @@ -185,7 +251,7 @@ QSizeF *QGraphicsLayoutItemPrivate::effectiveSizeHints(const QSizeF &constraint) // COMBINE_SIZE(descentS, q->sizeHint(Qt::MinimumDescent, constraint)); if (hasConstraint) { - cachedConstraint = constraint; + cachedConstraint = adjustedConstraint; sizeHintWithConstraintCacheDirty = false; } else { sizeHintCacheDirty = false; diff --git a/src/gui/image/qimagereader.cpp b/src/gui/image/qimagereader.cpp index 411e5e9..2b56e49 100644 --- a/src/gui/image/qimagereader.cpp +++ b/src/gui/image/qimagereader.cpp @@ -1473,11 +1473,16 @@ QByteArray QImageReader::imageFormat(QIODevice *device) \row \o XBM \o X11 Bitmap \row \o XPM \o X11 Pixmap \row \o SVG \o Scalable Vector Graphics + \row \o TGA \o Targa Image Format \endtable Reading and writing SVG files is supported through Qt's \l{QtSvg Module}{SVG Module}. + TGA support only extends to reading non-RLE compressed files. In particular + calls to \l{http://doc.qt.nokia.com/4.7-snapshot/qimageioplugin.html#capabilities}{capabilities} + for the tga plugin returns only QImageIOPlugin::CanRead, not QImageIOPlugin::CanWrite. + To configure Qt with GIF support, pass \c -qt-gif to the \c configure script or check the appropriate option in the graphical installer. diff --git a/src/gui/image/qpnghandler.cpp b/src/gui/image/qpnghandler.cpp index 1714442..5a4a4d7 100644 --- a/src/gui/image/qpnghandler.cpp +++ b/src/gui/image/qpnghandler.cpp @@ -53,6 +53,7 @@ #ifdef QT_USE_BUNDLED_LIBPNG #include <../../3rdparty/libpng/png.h> #include <../../3rdparty/libpng/pngconf.h> +using namespace PrivatePng; #else #include <png.h> #include <pngconf.h> diff --git a/src/gui/image/qtiffhandler.cpp b/src/gui/image/qtiffhandler.cpp index 4dc9775..51a500d 100644 --- a/src/gui/image/qtiffhandler.cpp +++ b/src/gui/image/qtiffhandler.cpp @@ -158,7 +158,13 @@ bool QTiffHandler::canRead(QIODevice *device) // current implementation uses TIFFClientOpen which needs to be // able to seek, so sequential devices are not supported + int pos = device->pos(); + if (pos != 0) + device->seek(0); // need the magic from the beginning QByteArray header = device->peek(4); + if (pos != 0) + device->seek(pos); // put it back where we found it + return header == QByteArray::fromRawData("\x49\x49\x2A\x00", 4) || header == QByteArray::fromRawData("\x4D\x4D\x00\x2A", 4); } diff --git a/src/gui/inputmethod/qcoefepinputcontext_p.h b/src/gui/inputmethod/qcoefepinputcontext_p.h index 90d47f9..d9d577a 100644 --- a/src/gui/inputmethod/qcoefepinputcontext_p.h +++ b/src/gui/inputmethod/qcoefepinputcontext_p.h @@ -162,6 +162,8 @@ private: void enableSymbianCcpuSupport(); void changeCBA(bool showCopyAndOrPaste); void copyOrCutTextToClipboard(const char *operation); + void getScreenCoordinatesForFepX(TPoint& aLeftSideOfBaseLine, TInt& aHeight, TInt& aAscent, + TInt aDocumentPosition) const; //From MEikCcpuEditor interface public: @@ -223,6 +225,7 @@ private: Q_GUI_EXPORT void qt_s60_setPartialScreenInputMode(bool enable); Q_GUI_EXPORT void qt_s60_setPartialScreenAutomaticTranslation(bool enable); +Q_GUI_EXPORT void qt_s60_setEditorFlags(int flags); QT_END_NAMESPACE diff --git a/src/gui/inputmethod/qcoefepinputcontext_s60.cpp b/src/gui/inputmethod/qcoefepinputcontext_s60.cpp index ed7411f..3bcac62 100644 --- a/src/gui/inputmethod/qcoefepinputcontext_s60.cpp +++ b/src/gui/inputmethod/qcoefepinputcontext_s60.cpp @@ -367,6 +367,11 @@ Q_GUI_EXPORT void qt_s60_setPartialScreenAutomaticTranslation(bool enable) S60->partial_keyboardAutoTranslation = enable; } +Q_GUI_EXPORT void qt_s60_setEditorFlags(int flags) +{ + S60->editorFlags |= flags; +} + QCoeFepInputContext::QCoeFepInputContext(QObject *parent) : QInputContext(parent), m_fepState(q_check_ptr(new CAknEdwinState)), // CBase derived object needs check on new @@ -1160,6 +1165,11 @@ void QCoeFepInputContext::applyHints(Qt::InputMethodHints hints) if (hints & ImhNoPredictiveText || hints & ImhHiddenText) { flags |= EAknEditorFlagNoT9; } + + if ((hints & (ImhEmailCharactersOnly | ImhUrlCharactersOnly)) && (S60->editorFlags & EAknEditorFlagLatinInputModesOnly)){ + flags |= EAknEditorFlagLatinInputModesOnly; + } + if (needsCharMap) flags |= EAknEditorFlagUseSCTNumericCharmap; m_fepState->SetFlags(flags); @@ -1465,40 +1475,49 @@ void QCoeFepInputContext::CancelFepInlineEdit() m_pendingTransactionCancel = true; - QList<QInputMethodEvent::Attribute> attributes; - QInputMethodEvent event(QLatin1String(""), attributes); - event.setCommitString(QLatin1String(""), 0, 0); - m_preeditString.clear(); - m_inlinePosition = 0; - sendEvent(event); + QT_TRY { + QList<QInputMethodEvent::Attribute> attributes; + QInputMethodEvent event(QLatin1String(""), attributes); + event.setCommitString(QLatin1String(""), 0, 0); + m_preeditString.clear(); + m_inlinePosition = 0; + sendEvent(event); - // Sync with native side editor state. Native side can then do various operations - // based on editor state, such as removing 'exact word bubble'. - if (!m_pendingInputCapabilitiesChanged) - ReportAknEdStateEvent(MAknEdStateObserver::EAknSyncEdwinState); + // Sync with native side editor state. Native side can then do various operations + // based on editor state, such as removing 'exact word bubble'. + if (!m_pendingInputCapabilitiesChanged) + ReportAknEdStateEvent(MAknEdStateObserver::EAknSyncEdwinState); + } QT_CATCH(const std::exception&) { + m_preeditString.clear(); + m_inlinePosition = 0; + } m_pendingTransactionCancel = false; } TInt QCoeFepInputContext::DocumentLengthForFep() const { - QWidget *w = focusWidget(); - if (!w) - return 0; + QT_TRY { + QWidget *w = focusWidget(); + if (!w) + return 0; - QVariant variant = w->inputMethodQuery(Qt::ImSurroundingText); + QVariant variant = w->inputMethodQuery(Qt::ImSurroundingText); - int size = variant.value<QString>().size() + m_preeditString.size(); + int size = variant.value<QString>().size() + m_preeditString.size(); - // To fix an issue with backspaces not being generated if document size is zero, - // fake document length to be at least one always, except when dealing with - // hidden text widgets, where this faking would generate extra asterisk. Since the - // primary use of hidden text widgets is password fields, they are unlikely to - // support multiple lines anyway. - if (size == 0 && !(m_textCapabilities & TCoeInputCapabilities::ESecretText)) - size = 1; + // To fix an issue with backspaces not being generated if document size is zero, + // fake document length to be at least one always, except when dealing with + // hidden text widgets, where this faking would generate extra asterisk. Since the + // primary use of hidden text widgets is password fields, they are unlikely to + // support multiple lines anyway. + if (size == 0 && !(m_textCapabilities & TCoeInputCapabilities::ESecretText)) + size = 1; - return size; + return size; + } QT_CATCH(const std::exception&) { + return 0; + } } TInt QCoeFepInputContext::DocumentMaximumLengthForFep() const @@ -1540,42 +1559,46 @@ void QCoeFepInputContext::SetCursorSelectionForFepL(const TCursorSelection& aCur void QCoeFepInputContext::GetCursorSelectionForFep(TCursorSelection& aCursorSelection) const { - QWidget *w = focusWidget(); - if (!w) { - aCursorSelection.SetSelection(0,0); - return; - } + QT_TRY { + QWidget *w = focusWidget(); + if (!w) { + aCursorSelection.SetSelection(0,0); + return; + } - int cursor = w->inputMethodQuery(Qt::ImCursorPosition).toInt() + m_preeditString.size(); - int anchor = w->inputMethodQuery(Qt::ImAnchorPosition).toInt() + m_preeditString.size(); + int cursor = w->inputMethodQuery(Qt::ImCursorPosition).toInt() + m_preeditString.size(); + int anchor = w->inputMethodQuery(Qt::ImAnchorPosition).toInt() + m_preeditString.size(); - // If the position is stored, use that value, so that word replacement from proposed word - // lists are added to the correct position. - if (m_cachedCursorAndAnchorPosition != -1) { - cursor = m_cachedCursorAndAnchorPosition; - anchor = m_cachedCursorAndAnchorPosition; - } - QString text = w->inputMethodQuery(Qt::ImSurroundingText).value<QString>(); - int combinedSize = text.size() + m_preeditString.size(); - if (combinedSize < anchor || combinedSize < cursor) { - // ### TODO! FIXME! QTBUG-5050 - // This is a hack to prevent crashing in 4.6 with QLineEdits that use input masks. - // The root problem is that cursor position is relative to displayed text instead of the - // actual text we get. - // - // To properly fix this we would need to know the displayText of QLineEdits instead - // of just the text, which on itself should be a trivial change. The difficulties start - // when we need to commit the changes back to the QLineEdit, which would have to be somehow - // able to handle displayText, too. - // - // Until properly fixed, the cursor and anchor positions will not reflect correct positions - // for masked QLineEdits, unless all the masked positions are filled in order so that - // cursor position relative to the displayed text matches position relative to actual text. - aCursorSelection.iAnchorPos = combinedSize; - aCursorSelection.iCursorPos = combinedSize; - } else { - aCursorSelection.iAnchorPos = anchor; - aCursorSelection.iCursorPos = cursor; + // If the position is stored, use that value, so that word replacement from proposed word + // lists are added to the correct position. + if (m_cachedCursorAndAnchorPosition != -1) { + cursor = m_cachedCursorAndAnchorPosition; + anchor = m_cachedCursorAndAnchorPosition; + } + QString text = w->inputMethodQuery(Qt::ImSurroundingText).value<QString>(); + int combinedSize = text.size() + m_preeditString.size(); + if (combinedSize < anchor || combinedSize < cursor) { + // ### TODO! FIXME! QTBUG-5050 + // This is a hack to prevent crashing in 4.6 with QLineEdits that use input masks. + // The root problem is that cursor position is relative to displayed text instead of the + // actual text we get. + // + // To properly fix this we would need to know the displayText of QLineEdits instead + // of just the text, which on itself should be a trivial change. The difficulties start + // when we need to commit the changes back to the QLineEdit, which would have to be somehow + // able to handle displayText, too. + // + // Until properly fixed, the cursor and anchor positions will not reflect correct positions + // for masked QLineEdits, unless all the masked positions are filled in order so that + // cursor position relative to the displayed text matches position relative to actual text. + aCursorSelection.iAnchorPos = combinedSize; + aCursorSelection.iCursorPos = combinedSize; + } else { + aCursorSelection.iAnchorPos = anchor; + aCursorSelection.iCursorPos = cursor; + } + } QT_CATCH(const std::exception&) { + aCursorSelection.SetSelection(0,0); } } @@ -1618,6 +1641,12 @@ void QCoeFepInputContext::GetFormatForFep(TCharFormat& aFormat, TInt /* aDocumen } void QCoeFepInputContext::GetScreenCoordinatesForFepL(TPoint& aLeftSideOfBaseLine, TInt& aHeight, + TInt& aAscent, TInt aDocumentPosition) const +{ + QT_TRYCATCH_LEAVING(getScreenCoordinatesForFepX(aLeftSideOfBaseLine, aHeight, aAscent, aDocumentPosition)); +} + +void QCoeFepInputContext::getScreenCoordinatesForFepX(TPoint& aLeftSideOfBaseLine, TInt& aHeight, TInt& aAscent, TInt /* aDocumentPosition */) const { QWidget *w = focusWidget(); @@ -1774,36 +1803,40 @@ TBool QCoeFepInputContext::CcpuIsFocused() const TBool QCoeFepInputContext::CcpuCanCut() const { - bool retval = false; - if (m_inDestruction) - return retval; - QWidget *w = focusWidget(); - QObject *focusObject = 0; - if (!w) { - w = m_lastFocusedEditor; - focusObject = m_lastFocusedObject; - } else { - w = getQWidgetFromQGraphicsView(w, &focusObject); - } - if (w) { - QRect microFocus = w->inputMethodQuery(Qt::ImMicroFocus).toRect(); - if (microFocus.isNull()) { - // For some reason, the editor does not have microfocus. Most probably, - // it is due to using native fullscreen editing mode with QML apps. - // Try accessing "selectedText" directly. - QObject *invokeTarget = w; - if (focusObject) - invokeTarget = focusObject; - - QString selectedText = invokeTarget->property("selectedText").toString(); - retval = !selectedText.isNull(); + QT_TRY { + bool retval = false; + if (m_inDestruction) + return retval; + QWidget *w = focusWidget(); + QObject *focusObject = 0; + if (!w) { + w = m_lastFocusedEditor; + focusObject = m_lastFocusedObject; } else { - int cursor = w->inputMethodQuery(Qt::ImCursorPosition).toInt(); - int anchor = w->inputMethodQuery(Qt::ImAnchorPosition).toInt(); - retval = cursor != anchor; + w = getQWidgetFromQGraphicsView(w, &focusObject); + } + if (w) { + QRect microFocus = w->inputMethodQuery(Qt::ImMicroFocus).toRect(); + if (microFocus.isNull()) { + // For some reason, the editor does not have microfocus. Most probably, + // it is due to using native fullscreen editing mode with QML apps. + // Try accessing "selectedText" directly. + QObject *invokeTarget = w; + if (focusObject) + invokeTarget = focusObject; + + QString selectedText = invokeTarget->property("selectedText").toString(); + retval = !selectedText.isNull(); + } else { + int cursor = w->inputMethodQuery(Qt::ImCursorPosition).toInt(); + int anchor = w->inputMethodQuery(Qt::ImAnchorPosition).toInt(); + retval = cursor != anchor; + } } + return retval; + } QT_CATCH(const std::exception&) { + return EFalse; } - return retval; } void QCoeFepInputContext::CcpuCutL() diff --git a/src/gui/itemviews/qtreeview.cpp b/src/gui/itemviews/qtreeview.cpp index 868cd92..1fbf69c 100644 --- a/src/gui/itemviews/qtreeview.cpp +++ b/src/gui/itemviews/qtreeview.cpp @@ -1388,11 +1388,19 @@ void QTreeViewPrivate::adjustViewOptionsForIndex(QStyleOptionViewItemV4 *option, option->showDecorationSelected = (selectionBehavior & QTreeView::SelectRows) || option->showDecorationSelected; - QVector<int> logicalIndices; - QVector<QStyleOptionViewItemV4::ViewItemPosition> viewItemPosList; // vector of left/middle/end for each logicalIndex + QVector<int> logicalIndices; // index = visual index of visible columns only. data = logical index. + QVector<QStyleOptionViewItemV4::ViewItemPosition> viewItemPosList; // vector of left/middle/end for each logicalIndex, visible columns only. calcLogicalIndices(&logicalIndices, &viewItemPosList); - int logicalIndex = header->logicalIndex(current.column()); - option->viewItemPosition = viewItemPosList.at(logicalIndex); + + int columnIndex = 0; + for (int visualIndex = 0; visualIndex < current.column(); ++visualIndex) { + int logicalIndex = header->logicalIndex(visualIndex); + if (!header->isSectionHidden(logicalIndex)) { + ++columnIndex; + } + } + + option->viewItemPosition = viewItemPosList.at(columnIndex); } @@ -2919,7 +2927,6 @@ void QTreeViewPrivate::expand(int item, bool emitSignal) void QTreeViewPrivate::insertViewItems(int pos, int count, const QTreeViewItem &viewItem) { - Q_Q(QTreeView); viewItems.insert(pos, count, viewItem); QTreeViewItem *items = viewItems.data(); for (int i = pos + count; i < viewItems.count(); i++) @@ -2927,6 +2934,7 @@ void QTreeViewPrivate::insertViewItems(int pos, int count, const QTreeViewItem & items[i].parentItem += count; #ifndef QT_NO_ACCESSIBILITY #ifdef Q_WS_X11 + Q_Q(QTreeView); if (QAccessible::isActive()) { QAccessible::updateAccessibility(q, 0, QAccessible::TableModelChanged); } @@ -2936,7 +2944,6 @@ void QTreeViewPrivate::insertViewItems(int pos, int count, const QTreeViewItem & void QTreeViewPrivate::removeViewItems(int pos, int count) { - Q_Q(QTreeView); viewItems.remove(pos, count); QTreeViewItem *items = viewItems.data(); for (int i = pos; i < viewItems.count(); i++) @@ -2944,6 +2951,7 @@ void QTreeViewPrivate::removeViewItems(int pos, int count) items[i].parentItem -= count; #ifndef QT_NO_ACCESSIBILITY #ifdef Q_WS_X11 + Q_Q(QTreeView); if (QAccessible::isActive()) { QAccessible::updateAccessibility(q, 0, QAccessible::TableModelChanged); } diff --git a/src/gui/kernel/qapplication_s60.cpp b/src/gui/kernel/qapplication_s60.cpp index fe239f5..587c0f2 100644 --- a/src/gui/kernel/qapplication_s60.cpp +++ b/src/gui/kernel/qapplication_s60.cpp @@ -273,19 +273,16 @@ void QS60Data::controlVisibilityChanged(CCoeControl *control, bool visible) TRect QS60Data::clientRect() { TRect r = static_cast<CEikAppUi*>(S60->appUi())->ClientRect(); - if (S60->partialKeyboardOpen) { - // Adjust client rect when splitview is open, since for some curious reason - // native side insists that clientRect starts from (0,0) even though status - // pane might be visible. + if (S60->partialKeyboardOpen && !QApplication::testAttribute(Qt::AA_S60DontConstructApplicationPanes)) { + // Adjust client rect when splitview is open + // We want it to take the client rect space as if the splitview keyboard was not there TRect statusPaneRect; TRect mainRect; AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EStatusPane, statusPaneRect); AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, mainRect); int clientAreaHeight = mainRect.Height(); CEikStatusPane *const s = S60->statusPane(); - if (s && s->IsVisible()) - r.Move(0, statusPaneRect.Height()); - else + if (!(s && s->IsVisible())) clientAreaHeight += statusPaneRect.Height(); r.SetHeight(clientAreaHeight); } @@ -1534,53 +1531,57 @@ bool QSymbianControl::hasFocusedAndVisibleChild(QWidget *parentWidget) void QSymbianControl::FocusChanged(TDrawNow /* aDrawNow */) { - if (m_ignoreFocusChanged || (qwidget->windowType() & Qt::WindowType_Mask) == Qt::Desktop) - return; + QT_TRY { + if (m_ignoreFocusChanged || (qwidget->windowType() & Qt::WindowType_Mask) == Qt::Desktop) + return; #ifdef Q_WS_S60 - if (S60->splitViewLastWidget) - return; + if (S60->splitViewLastWidget) + return; #endif - // Popups never get focused, but still receive the FocusChanged when they are hidden. - if (QApplicationPrivate::popupWidgets != 0 - || (qwidget->windowType() & Qt::Popup) == Qt::Popup) - return; - - if (IsFocused() && IsVisible()) { - if (m_symbianPopupIsOpen) { - QWidget *fw = QApplication::focusWidget(); - if (fw) { - QFocusEvent event(QEvent::FocusIn, Qt::PopupFocusReason); - QCoreApplication::sendEvent(fw, &event); - } - m_symbianPopupIsOpen = false; - } + // Popups never get focused, but still receive the FocusChanged when they are hidden. + if (QApplicationPrivate::popupWidgets != 0 + || (qwidget->windowType() & Qt::Popup) == Qt::Popup) + return; - QApplication::setActiveWindow(qwidget->window()); - qwidget->d_func()->setWindowIcon_sys(true); - qwidget->d_func()->setWindowTitle_sys(qwidget->windowTitle()); -#ifdef Q_WS_S60 - if (qwidget->isWindow()) - S60->setRecursiveDecorationsVisibility(qwidget, qwidget->windowState()); -#endif - } else { QWidget *parentWindow = qwidget->window(); - if (QApplication::activeWindow() == parentWindow && !hasFocusedAndVisibleChild(parentWindow)) { - if (CCoeEnv::Static()->AppUi()->IsDisplayingMenuOrDialog() || S60->menuBeingConstructed) { + if (IsFocused() && IsVisible()) { + if (m_symbianPopupIsOpen) { QWidget *fw = QApplication::focusWidget(); if (fw) { - QFocusEvent event(QEvent::FocusOut, Qt::PopupFocusReason); + QFocusEvent event(QEvent::FocusIn, Qt::PopupFocusReason); QCoreApplication::sendEvent(fw, &event); } - m_symbianPopupIsOpen = true; - return; + m_symbianPopupIsOpen = false; } - QApplication::setActiveWindow(0); + QApplication::setActiveWindow(qwidget->window()); + qwidget->d_func()->setWindowIcon_sys(true); + qwidget->d_func()->setWindowTitle_sys(qwidget->windowTitle()); +#ifdef Q_WS_S60 + if (parentWindow->isWindow()) + S60->setRecursiveDecorationsVisibility(parentWindow, parentWindow->windowState()); +#endif + } else { + if (QApplication::activeWindow() == parentWindow && !hasFocusedAndVisibleChild(parentWindow)) { + if (CCoeEnv::Static()->AppUi()->IsDisplayingMenuOrDialog() || S60->menuBeingConstructed) { + QWidget *fw = QApplication::focusWidget(); + if (fw) { + QFocusEvent event(QEvent::FocusOut, Qt::PopupFocusReason); + QCoreApplication::sendEvent(fw, &event); + } + m_symbianPopupIsOpen = true; + return; + } + + QApplication::setActiveWindow(0); + } } + // else { We don't touch the active window unless we were explicitly activated or deactivated } + } QT_CATCH(const std::exception&) { + // ignore errors } - // else { We don't touch the active window unless we were explicitly activated or deactivated } } void QSymbianControl::handleClientAreaChange() @@ -2065,9 +2066,6 @@ extern void qt_cleanup_symbianFontDatabase(); // qfontdatabase_s60.cpp *****************************************************************************/ void qt_cleanup() { -#ifdef Q_WS_S60 - S60->setButtonGroupContainer(0); -#endif if(qt_S60Beep) { delete qt_S60Beep; qt_S60Beep = 0; @@ -2377,19 +2375,25 @@ int QApplication::symbianProcessEvent(const QSymbianEvent *event) QScopedLoopLevelCounter counter(d->threadData); - if (d->eventDispatcher->filterEvent(const_cast<QSymbianEvent *>(event))) - return 1; + QT_TRY { + if (d->eventDispatcher->filterEvent(const_cast<QSymbianEvent *>(event))) + return 1; - QWidget *w = qApp ? qApp->focusWidget() : 0; - if (w) { - QInputContext *ic = w->inputContext(); - if (ic && ic->symbianFilterEvent(w, event)) + QWidget *w = qApp ? qApp->focusWidget() : 0; + if (w) { + QInputContext *ic = w->inputContext(); + if (ic && ic->symbianFilterEvent(w, event)) + return 1; + } + + if (symbianEventFilter(event)) return 1; + } QT_CATCH(const std::exception& ex) { + // don't allow an exception to stop exit command handling + if (event->type() != QSymbianEvent::CommandEvent || event->command() != EEikCmdExit) + QT_RETHROW; } - if (symbianEventFilter(event)) - return 1; - switch (event->type()) { case QSymbianEvent::WindowServerEvent: return d->symbianProcessWsEvent(event); diff --git a/src/gui/kernel/qclipboard_s60.cpp b/src/gui/kernel/qclipboard_s60.cpp index f5314bd..dc812fb 100644 --- a/src/gui/kernel/qclipboard_s60.cpp +++ b/src/gui/kernel/qclipboard_s60.cpp @@ -187,6 +187,7 @@ void readSymbianStoreLX(QMimeData* aData, CClipboard* clipboard) QString string = qt_TDesC2QString(buf); CleanupStack::PopAndDestroy(text); + aData->clear(); aData->setText(string); } @@ -196,6 +197,8 @@ void readFromStreamLX(QMimeData* aData,RReadStream& aStream) // dependencies between cleanup styles, and no cleanup stack dependencies on stacked objects. TCardinality mimeTypeCount; aStream >> mimeTypeCount; + if (mimeTypeCount > 0) + aData->clear(); for (int i = 0; i< mimeTypeCount;i++) { // mime type diff --git a/src/gui/kernel/qsoftkeymanager_s60.cpp b/src/gui/kernel/qsoftkeymanager_s60.cpp index 999fccc..4d58baa 100644 --- a/src/gui/kernel/qsoftkeymanager_s60.cpp +++ b/src/gui/kernel/qsoftkeymanager_s60.cpp @@ -104,8 +104,13 @@ void QSoftKeyManagerPrivateS60::ensureCbaVisibilityAndResponsiviness(CEikButtonG { RDrawableWindow *cbaWindow = cba.DrawableWindow(); Q_ASSERT_X(cbaWindow, Q_FUNC_INFO, "Native CBA does not have window!"); - // Make sure CBA is visible, i.e. CBA window is on top - cbaWindow->SetOrdinalPosition(0); + // CBA comes on top of new option menu + int pos = 0; + + if(cba.ButtonGroupType()== SLafButtonGroupContainer::ECba) + pos = 1; + + cbaWindow->SetOrdinalPosition(pos); // Qt shares same CBA instance between top-level widgets, // make sure we are not faded by underlying window. cbaWindow->SetFaded(EFalse, RWindowTreeNode::EFadeIncludeChildren); diff --git a/src/gui/kernel/qt_s60_p.h b/src/gui/kernel/qt_s60_p.h index 5b5d5ce..c75b20e 100644 --- a/src/gui/kernel/qt_s60_p.h +++ b/src/gui/kernel/qt_s60_p.h @@ -230,6 +230,7 @@ public: int beginFullScreenCalled : 1; int endFullScreenCalled : 1; + int editorFlags; }; Q_AUTOTEST_EXPORT QS60Data* qGlobalS60Data(); @@ -390,7 +391,8 @@ inline QS60Data::QS60Data() ,s60InstalledTrapHandler(0) #endif ,beginFullScreenCalled(0), - endFullScreenCalled(0) + endFullScreenCalled(0), + editorFlags(0) { } diff --git a/src/gui/kernel/qwidget_x11.cpp b/src/gui/kernel/qwidget_x11.cpp index 52e3046..c3362ae 100644 --- a/src/gui/kernel/qwidget_x11.cpp +++ b/src/gui/kernel/qwidget_x11.cpp @@ -2666,8 +2666,17 @@ void QWidgetPrivate::setConstraints_sys() #ifdef ALIEN_DEBUG qDebug() << "QWidgetPrivate::setConstraints_sys START" << q; #endif - if (q->testAttribute(Qt::WA_WState_Created)) + if (q->testAttribute(Qt::WA_WState_Created)) { do_size_hints(q, extra); + QtMWMHints mwmHints = GetMWMHints(X11->display, q->internalWinId()); + const bool wasFuncResize = mwmHints.functions & MWM_FUNC_RESIZE; + if (q->minimumSize() == q->maximumSize()) + mwmHints.functions &= ~MWM_FUNC_RESIZE; + else + mwmHints.functions |= MWM_FUNC_RESIZE; + if (wasFuncResize != (mwmHints.functions & MWM_FUNC_RESIZE)) + SetMWMHints(X11->display, q->internalWinId(), mwmHints); + } #ifdef ALIEN_DEBUG qDebug() << "QWidgetPrivate::setConstraints_sys END" << q; #endif diff --git a/src/gui/painting/painting.pri b/src/gui/painting/painting.pri index 27b1bf2..d4f904b 100644 --- a/src/gui/painting/painting.pri +++ b/src/gui/painting/painting.pri @@ -200,10 +200,12 @@ symbian { SOURCES += \ painting/qpaintengine_raster_symbian.cpp \ painting/qregion_s60.cpp \ - painting/qcolormap_s60.cpp + painting/qcolormap_s60.cpp \ + painting/qgraphicssystemhelper_symbian.cpp HEADERS += \ - painting/qpaintengine_raster_symbian_p.h + painting/qpaintengine_raster_symbian_p.h \ + painting/qgraphicssystemhelper_symbian.h } x11|embedded|qpa { diff --git a/src/gui/painting/qbackingstore.cpp b/src/gui/painting/qbackingstore.cpp index 6fbb59f..d79be41 100644 --- a/src/gui/painting/qbackingstore.cpp +++ b/src/gui/painting/qbackingstore.cpp @@ -1625,7 +1625,7 @@ void QWidgetPrivate::repaint_sys(const QRegion &rgn) extra->staticContentsSize = data.crect.size(); } -#ifdef Q_WS_QPA //Dont even call q->p +#ifdef Q_WS_QPA //Don't even call q->p QPaintEngine *engine = 0; #else QPaintEngine *engine = q->paintEngine(); diff --git a/src/gui/painting/qgraphicssystem_runtime.cpp b/src/gui/painting/qgraphicssystem_runtime.cpp index 19b29a1..6d3f16e 100644 --- a/src/gui/painting/qgraphicssystem_runtime.cpp +++ b/src/gui/painting/qgraphicssystem_runtime.cpp @@ -330,11 +330,15 @@ QRuntimeGraphicsSystem::QRuntimeGraphicsSystem() { QApplicationPrivate::runtime_graphics_system = true; + if (!qgetenv("QT_DEFAULT_RUNTIME_SYSTEM").isEmpty()) { + m_graphicsSystemName = QString::fromLocal8Bit(qgetenv("QT_DEFAULT_RUNTIME_SYSTEM")); + } else { #ifdef QT_DEFAULT_RUNTIME_SYSTEM - m_graphicsSystemName = QLatin1String(QT_DEFAULT_RUNTIME_SYSTEM); - if (m_graphicsSystemName.isNull()) + m_graphicsSystemName = QLatin1String(QT_DEFAULT_RUNTIME_SYSTEM); + if (m_graphicsSystemName.isNull()) #endif - m_graphicsSystemName = QLatin1String("raster"); + m_graphicsSystemName = QLatin1String("raster"); + } #ifdef Q_OS_SYMBIAN m_windowSurfaceDestroyPolicy = DestroyAfterFirstFlush; diff --git a/src/gui/painting/qgraphicssystemex_symbian.cpp b/src/gui/painting/qgraphicssystemex_symbian.cpp index 5a182ff..5bfd5a8 100644 --- a/src/gui/painting/qgraphicssystemex_symbian.cpp +++ b/src/gui/painting/qgraphicssystemex_symbian.cpp @@ -74,7 +74,7 @@ bool QSymbianGraphicsSystemEx::hasBCM2727() #if 1 // Hacky but fast ~0ms. const char* vendor = eglQueryString(display, EGL_VENDOR); - if (strstr(vendor, "Broadcom")) { + if (vendor && strstr(vendor, "Broadcom")) { const TUid KIvePropertyCat = {0x2726beef}; enum TIvePropertyChipType { EVCBCM2727B1 = 0x00000000, diff --git a/src/gui/painting/qgraphicssystemfactory.cpp b/src/gui/painting/qgraphicssystemfactory.cpp index 01ece09..b817a90 100644 --- a/src/gui/painting/qgraphicssystemfactory.cpp +++ b/src/gui/painting/qgraphicssystemfactory.cpp @@ -45,7 +45,6 @@ #include "qmutex.h" #include "qapplication.h" -#include <private/qapplication_p.h> #include "qgraphicssystem_raster_p.h" #include "qgraphicssystem_runtime_p.h" #include "qdebug.h" @@ -80,7 +79,6 @@ QGraphicsSystem *QGraphicsSystemFactory::create(const QString& key) } #endif - QApplicationPrivate::graphics_system_name = system; if (system == QLatin1String("raster")) return new QRasterGraphicsSystem; else if (system == QLatin1String("runtime")) diff --git a/src/gui/painting/qgraphicssystemhelper_symbian.cpp b/src/gui/painting/qgraphicssystemhelper_symbian.cpp new file mode 100644 index 0000000..eb70247 --- /dev/null +++ b/src/gui/painting/qgraphicssystemhelper_symbian.cpp @@ -0,0 +1,141 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qgraphicssystemhelper_symbian.h" +#include "qt_s60_p.h" +#include "qwidget_p.h" + +QT_BEGIN_NAMESPACE + +/*! + \enum QSymbianGraphicsSystemHelper::NativePaintMode + + This enum controls the way in which QWidget paints content from the Qt + backing store into the corresponding native window surface. + + \value NativePaintModeDefault Default painting behaviour. + \value NativePaintModeZeroFill Ignore contents of backing store, and + fill the window surface region with zeroes. + \value NativePaintModeWriteAlpha By default, alpha values are only copied + from the backing store into the window surface if the top-level widget + has the Qt::WA_TranslucentBackground attribute. If this mode is set, + alpha values are copied regardless of the value of that attribute. + \value NativePaintModeDisable Do not paint anything into the native window + surface. + */ + +/*! + \class QSymbianGraphicsSystemHelper + \ingroup painting + + \brief QSymbianGraphicsSystemHelper defines functions required by + QtMultimediaKit in order to enable video rendering. + + This class is not intended for use by applications. +*/ + +/*! + Specify whether native focus change events should be ignored by the widget. +*/ + +void QSymbianGraphicsSystemHelper::setIgnoreFocusChanged(QWidget *widget, bool value) +{ + static_cast<QSymbianControl *>(widget->winId())->setIgnoreFocusChanged(value); +} + +/*! + Set the native paint mode to the specified \a mode. +*/ + +void QSymbianGraphicsSystemHelper::setNativePaintMode(QWidget *widget, NativePaintMode mode) +{ + QWidgetPrivate *widgetPrivate = qt_widget_private(widget->window()); + widgetPrivate->createExtra(); + QWExtra::NativePaintMode widgetMode = QWExtra::Default; + switch (mode) { + case NativePaintModeDefault: + break; + case NativePaintModeZeroFill: + widgetMode = QWExtra::ZeroFill; + break; + case NativePaintModeWriteAlpha: + widgetMode = QWExtra::BlitWriteAlpha; + break; + case NativePaintModeDisable: + widgetMode = QWExtra::Disable; + break; + } + widgetPrivate->extraData()->nativePaintMode = widgetMode; +} + +/*! + Set the native paint mode to the specified \a mode. +*/ + +void QSymbianGraphicsSystemHelper::setNativePaintMode(WId wid, NativePaintMode mode) +{ + QWidget *window = static_cast<QSymbianControl *>(wid)->widget()->window(); + setNativePaintMode(window, mode); +} + +/*! + Specify whether the widget should receive receive native paint events. + + If enabled, the QWidget::beginNativePaintEvent slot is called before + content from the backing store is written into the native window + surface, and QWidget::endNativePaintEvent is called once writing to + the native window surface is complete. + + This function is intended for use by QWidget clients such as video + widgets, which wish to use Direct Screen Access to write into the + native window surface. Such clients should stop their DSA session on + receipt of QWidget::beginNativePaintEvent, and re-start it on receipt of + QWidget::endNativePaintEvent. +*/ + +void QSymbianGraphicsSystemHelper::setReceiveNativePaintEvents(QWidget *widget, bool value) +{ + QWidgetPrivate *widgetPrivate = qt_widget_private(widget); + widgetPrivate->createExtra(); + widgetPrivate->extraData()->receiveNativePaintEvents = value; +} + +QT_END_NAMESPACE diff --git a/src/gui/painting/qgraphicssystemhelper_symbian.h b/src/gui/painting/qgraphicssystemhelper_symbian.h new file mode 100644 index 0000000..b74144e --- /dev/null +++ b/src/gui/painting/qgraphicssystemhelper_symbian.h @@ -0,0 +1,82 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSYMBIANGRAPHICSSYSTEMHELPER_H +#define QSYMBIANGRAPHICSSYSTEMHELPER_H + +#include <QtCore/qglobal.h> + +#ifndef Q_OS_SYMBIAN +#error "This header file can only be included when building for Symbian" +#endif + +#include <QtGui/qwindowdefs.h> + +QT_BEGIN_HEADER + +QT_BEGIN_NAMESPACE + +QT_MODULE(Gui) + +class QWidget; + +class Q_GUI_EXPORT QSymbianGraphicsSystemHelper +{ +public: + enum NativePaintMode { + NativePaintModeDefault, + NativePaintModeZeroFill, + NativePaintModeWriteAlpha, + NativePaintModeDisable + }; + + static void setIgnoreFocusChanged(QWidget *widget, bool value); + static void setNativePaintMode(QWidget *widget, NativePaintMode mode); + static void setNativePaintMode(WId wid, NativePaintMode mode); + static void setReceiveNativePaintEvents(QWidget *widget, bool value); +}; + +QT_END_NAMESPACE + +QT_END_HEADER + +#endif // QSYMBIANGRAPHICSSYSTEMHELPER_H + diff --git a/src/imports/shaders/glfunctions.h b/src/imports/shaders/glfunctions.h index c7ba80d..c7ba80d 100755..100644 --- a/src/imports/shaders/glfunctions.h +++ b/src/imports/shaders/glfunctions.h diff --git a/src/imports/shaders/shadereffectitem.cpp b/src/imports/shaders/shadereffectitem.cpp index b954e5a..b954e5a 100755..100644 --- a/src/imports/shaders/shadereffectitem.cpp +++ b/src/imports/shaders/shadereffectitem.cpp diff --git a/src/network/bearer/qnetworkconfigmanager.cpp b/src/network/bearer/qnetworkconfigmanager.cpp index 8065025..da09a9c 100644 --- a/src/network/bearer/qnetworkconfigmanager.cpp +++ b/src/network/bearer/qnetworkconfigmanager.cpp @@ -46,34 +46,56 @@ #include <QtCore/qstringlist.h> #include <QtCore/qcoreapplication.h> +#include <QtCore/qmutex.h> +#include <QtCore/qthread.h> +#include <QtCore/private/qcoreapplication_p.h> #ifndef QT_NO_BEARERMANAGEMENT QT_BEGIN_NAMESPACE -#define Q_GLOBAL_STATIC_QAPP_DESTRUCTION(TYPE, NAME) \ - static QGlobalStatic<TYPE > this_##NAME \ - = { Q_BASIC_ATOMIC_INITIALIZER(0), false }; \ - static void NAME##_cleanup() \ - { \ - this_##NAME.pointer->cleanup(); \ - this_##NAME.pointer = 0; \ - } \ - static TYPE *NAME() \ - { \ - if (!this_##NAME.pointer) { \ - TYPE *x = new TYPE; \ - if (!this_##NAME.pointer.testAndSetOrdered(0, x)) \ - delete x; \ - else { \ - qAddPostRoutine(NAME##_cleanup); \ - this_##NAME.pointer->initialize(); \ - } \ - } \ - return this_##NAME.pointer; \ - } +static QBasicAtomicPointer<QNetworkConfigurationManagerPrivate> connManager_ptr; +Q_GLOBAL_STATIC(QMutex, connManager_mutex) + +static void connManager_cleanup() +{ + // this is not atomic or thread-safe! + if(connManager_ptr) + connManager_ptr->cleanup(); + connManager_ptr = 0; +} + +void QNetworkConfigurationManagerPrivate::addPostRoutine() +{ + qAddPostRoutine(connManager_cleanup); +} -Q_GLOBAL_STATIC_QAPP_DESTRUCTION(QNetworkConfigurationManagerPrivate, connManager); +static QNetworkConfigurationManagerPrivate *connManager() +{ + QNetworkConfigurationManagerPrivate *ptr = connManager_ptr.fetchAndAddAcquire(0); + if (!ptr) { + QMutexLocker locker(connManager_mutex()); + if (!(ptr = connManager_ptr.fetchAndAddAcquire(0))) { + ptr = new QNetworkConfigurationManagerPrivate; + + if (QCoreApplicationPrivate::mainThread() == QThread::currentThread()) { + // right thread or no main thread yet + ptr->addPostRoutine(); + ptr->initialize(); + } else { + // wrong thread, we need to make the main thread do this + QObject *obj = new QObject; + QObject::connect(obj, SIGNAL(destroyed()), ptr, SLOT(addPostRoutine()), Qt::DirectConnection); + ptr->initialize(); // this moves us to the right thread + obj->moveToThread(QCoreApplicationPrivate::mainThread()); + obj->deleteLater(); + } + + connManager_ptr.fetchAndStoreRelease(ptr); + } + } + return ptr; +} QNetworkConfigurationManagerPrivate *qNetworkConfigurationManagerPrivate() { diff --git a/src/network/bearer/qnetworkconfigmanager_p.h b/src/network/bearer/qnetworkconfigmanager_p.h index 56f66b4..ded1701 100644 --- a/src/network/bearer/qnetworkconfigmanager_p.h +++ b/src/network/bearer/qnetworkconfigmanager_p.h @@ -94,6 +94,8 @@ public: public Q_SLOTS: void updateConfigurations(); + static void addPostRoutine(); + Q_SIGNALS: void configurationAdded(const QNetworkConfiguration &config); void configurationRemoved(const QNetworkConfiguration &config); @@ -108,6 +110,7 @@ private Q_SLOTS: void pollEngines(); + private: Q_INVOKABLE void startPolling(); QTimer *pollTimer; diff --git a/src/network/kernel/qnetworkproxy.cpp b/src/network/kernel/qnetworkproxy.cpp index 71d61a4..4167b6d 100644 --- a/src/network/kernel/qnetworkproxy.cpp +++ b/src/network/kernel/qnetworkproxy.cpp @@ -1384,9 +1384,9 @@ void QNetworkProxyFactory::setApplicationProxyFactory(QNetworkProxyFactory *fact SOCKS server for all queries. If SOCKS isn't enabled, it will use the HTTPS proxy for all TcpSocket and UrlRequest queries. - On other systems, there is no standardised method of obtaining the - system proxy configuration. This function may be improved in - future versions to support those systems. + On other systems, this function will pick up proxy settings from + the "http_proxy" environment variable. This variable must be a URL + using one of the following schemes: "http", "socks5" or "socks5h". \section1 Limitations diff --git a/src/network/kernel/qnetworkproxy_symbian.cpp b/src/network/kernel/qnetworkproxy_symbian.cpp index 73068d6..e96c372 100644 --- a/src/network/kernel/qnetworkproxy_symbian.cpp +++ b/src/network/kernel/qnetworkproxy_symbian.cpp @@ -60,6 +60,7 @@ #include <QtNetwork/QNetworkConfigurationManager> #include <QtNetwork/QNetworkConfiguration> #include <QFlags> +#include <QtCore/private/qcore_symbian_p.h> using namespace CommsDat; @@ -73,6 +74,25 @@ public: void setIapId(TUint32 iapId) { valid = true; id = iapId; } bool isValid() { return valid; } TUint32 iapId() { return id; } + static SymbianIapId fromConfiguration(const QNetworkConfiguration& config) + { + SymbianIapId iapId; + // Note: the following code assumes that the identifier is in format + // I_xxxx where xxxx is the identifier of IAP. This is meant as a + // temporary solution until there is a support for returning + // implementation specific identifier. + const int generalPartLength = 2; + QString idString(config.identifier().mid(generalPartLength)); + bool success; + uint id = idString.toUInt(&success); + if (success) + iapId.setIapId(id); + else + qWarning() << "Failed to convert identifier to access point identifier: " + << config.identifier(); + return iapId; + } + private: bool valid; TUint32 id; @@ -122,9 +142,16 @@ QNetworkConfiguration SymbianProxyQuery::findCurrentConfigurationFromServiceNetw QNetworkConfiguration SymbianProxyQuery::findCurrentConfiguration(QNetworkConfigurationManager& configurationManager) { + QList<TUint32> openConfigurations = QSymbianSocketManager::instance().activeConnections(); QList<QNetworkConfiguration> activeConfigurations = configurationManager.allConfigurations( QNetworkConfiguration::Active); + for (int i = 0; i < activeConfigurations.count(); i++) { + // get first configuration which was opened by this process + if (openConfigurations.contains(SymbianIapId::fromConfiguration(activeConfigurations.at(i)).iapId())) + return activeConfigurations.at(i); + } if (activeConfigurations.count() > 0) { + // get first active configuration opened by any process return activeConfigurations.at(0); } else { // No active configurations, try default one diff --git a/src/network/socket/qlocalserver_unix.cpp b/src/network/socket/qlocalserver_unix.cpp index 851e898..390712c 100644 --- a/src/network/socket/qlocalserver_unix.cpp +++ b/src/network/socket/qlocalserver_unix.cpp @@ -167,16 +167,16 @@ bool QLocalServerPrivate::listen(const QString &requestedServerName) */ void QLocalServerPrivate::closeServer() { - if (-1 != listenSocket) - QT_CLOSE(listenSocket); - listenSocket = -1; - if (socketNotifier) { socketNotifier->setEnabled(false); // Otherwise, closed socket is checked before deleter runs socketNotifier->deleteLater(); socketNotifier = 0; } + if (-1 != listenSocket) + QT_CLOSE(listenSocket); + listenSocket = -1; + if (!fullServerName.isEmpty()) QFile::remove(fullServerName); } diff --git a/src/network/ssl/qsslsocket_openssl.cpp b/src/network/ssl/qsslsocket_openssl.cpp index 5f520f7..872b19c 100644 --- a/src/network/ssl/qsslsocket_openssl.cpp +++ b/src/network/ssl/qsslsocket_openssl.cpp @@ -254,7 +254,11 @@ bool QSslSocketBackendPrivate::initSslContext() init_context: switch (configuration.protocol) { case QSsl::SslV2: +#ifndef OPENSSL_NO_SSL2 ctx = q_SSL_CTX_new(client ? q_SSLv2_client_method() : q_SSLv2_server_method()); +#else + ctx = 0; // SSL 2 not supported by the system, but chosen deliberately -> error +#endif break; case QSsl::SslV3: ctx = q_SSL_CTX_new(client ? q_SSLv3_client_method() : q_SSLv3_server_method()); diff --git a/src/network/ssl/qsslsocket_openssl_symbols.cpp b/src/network/ssl/qsslsocket_openssl_symbols.cpp index 90a840f..51ecf5d 100644 --- a/src/network/ssl/qsslsocket_openssl_symbols.cpp +++ b/src/network/ssl/qsslsocket_openssl_symbols.cpp @@ -222,11 +222,15 @@ DEFINEFUNC(void, SSL_set_accept_state, SSL *a, a, return, DUMMYARG) DEFINEFUNC(void, SSL_set_connect_state, SSL *a, a, return, DUMMYARG) DEFINEFUNC(int, SSL_shutdown, SSL *a, a, return -1, return) #if OPENSSL_VERSION_NUMBER >= 0x10000000L +#ifndef OPENSSL_NO_SSL2 DEFINEFUNC(const SSL_METHOD *, SSLv2_client_method, DUMMYARG, DUMMYARG, return 0, return) +#endif DEFINEFUNC(const SSL_METHOD *, SSLv3_client_method, DUMMYARG, DUMMYARG, return 0, return) DEFINEFUNC(const SSL_METHOD *, SSLv23_client_method, DUMMYARG, DUMMYARG, return 0, return) DEFINEFUNC(const SSL_METHOD *, TLSv1_client_method, DUMMYARG, DUMMYARG, return 0, return) +#ifndef OPENSSL_NO_SSL2 DEFINEFUNC(const SSL_METHOD *, SSLv2_server_method, DUMMYARG, DUMMYARG, return 0, return) +#endif DEFINEFUNC(const SSL_METHOD *, SSLv3_server_method, DUMMYARG, DUMMYARG, return 0, return) DEFINEFUNC(const SSL_METHOD *, SSLv23_server_method, DUMMYARG, DUMMYARG, return 0, return) DEFINEFUNC(const SSL_METHOD *, TLSv1_server_method, DUMMYARG, DUMMYARG, return 0, return) @@ -741,11 +745,15 @@ bool q_resolveOpenSslSymbols() RESOLVEFUNC(SSL_set_connect_state) RESOLVEFUNC(SSL_shutdown) RESOLVEFUNC(SSL_write) +#ifndef OPENSSL_NO_SSL2 RESOLVEFUNC(SSLv2_client_method) +#endif RESOLVEFUNC(SSLv3_client_method) RESOLVEFUNC(SSLv23_client_method) RESOLVEFUNC(TLSv1_client_method) +#ifndef OPENSSL_NO_SSL2 RESOLVEFUNC(SSLv2_server_method) +#endif RESOLVEFUNC(SSLv3_server_method) RESOLVEFUNC(SSLv23_server_method) RESOLVEFUNC(TLSv1_server_method) diff --git a/src/opengl/qgl_qpa.cpp b/src/opengl/qgl_qpa.cpp index 518c860..b31833a 100644 --- a/src/opengl/qgl_qpa.cpp +++ b/src/opengl/qgl_qpa.cpp @@ -404,7 +404,7 @@ QGLContext *QGLContext::fromPlatformGLContext(QPlatformGLContext *platformContex return reinterpret_cast<QGLContext *>(platformContext->qGLContextHandle()); } QGLContext *glContext = new QGLContext(platformContext); - //Dont call create on context. This can cause the platformFormat to be set on the widget, which + //Don't call create on context. This can cause the platformFormat to be set on the widget, which //will cause the platformWindow to be recreated. return glContext; } diff --git a/src/opengl/qgltexturepool.cpp b/src/opengl/qgltexturepool.cpp index 9ad66f2..d19b1db 100644 --- a/src/opengl/qgltexturepool.cpp +++ b/src/opengl/qgltexturepool.cpp @@ -47,7 +47,7 @@ QT_BEGIN_NAMESPACE Q_OPENGL_EXPORT extern QGLWidget* qt_gl_share_widget(); -static QGLTexturePool *qt_gl_texture_pool = 0; +Q_GLOBAL_STATIC(QGLTexturePool, qt_gl_texture_pool) class QGLTexturePoolPrivate { @@ -69,9 +69,7 @@ QGLTexturePool::~QGLTexturePool() QGLTexturePool *QGLTexturePool::instance() { - if (!qt_gl_texture_pool) - qt_gl_texture_pool = new QGLTexturePool(); - return qt_gl_texture_pool; + return qt_gl_texture_pool(); } GLuint QGLTexturePool::createTexture(GLenum target, diff --git a/src/opengl/qwindowsurface_gl.cpp b/src/opengl/qwindowsurface_gl.cpp index e963f8c..a15084b 100644 --- a/src/opengl/qwindowsurface_gl.cpp +++ b/src/opengl/qwindowsurface_gl.cpp @@ -362,7 +362,7 @@ QGLWindowSurface::~QGLWindowSurface() { if (d_ptr->ctx) glDeleteTextures(1, &d_ptr->tex_id); -#ifndef Q_WS_QPA // Dont delete the contexts. Destroying the window does that for us +#ifndef Q_WS_QPA // Don't delete the contexts. Destroying the window does that for us foreach(QGLContext **ctx, d_ptr->contexts) { delete *ctx; *ctx = 0; diff --git a/src/openvg/qvgimagepool.cpp b/src/openvg/qvgimagepool.cpp index 3a187b0..cd1caf4 100644 --- a/src/openvg/qvgimagepool.cpp +++ b/src/openvg/qvgimagepool.cpp @@ -44,7 +44,7 @@ QT_BEGIN_NAMESPACE -static QVGImagePool *qt_vg_image_pool = 0; +Q_GLOBAL_STATIC(QVGImagePool, qt_vg_image_pool) class QVGImagePoolPrivate { @@ -66,16 +66,7 @@ QVGImagePool::~QVGImagePool() QVGImagePool *QVGImagePool::instance() { - if (!qt_vg_image_pool) - qt_vg_image_pool = new QVGImagePool(); - return qt_vg_image_pool; -} - -void QVGImagePool::setImagePool(QVGImagePool *pool) -{ - if (qt_vg_image_pool != pool) - delete qt_vg_image_pool; - qt_vg_image_pool = pool; + return qt_vg_image_pool(); } VGImage QVGImagePool::createTemporaryImage(VGImageFormat format, diff --git a/src/openvg/qvgimagepool_p.h b/src/openvg/qvgimagepool_p.h index 07c57bf..e4fd4e1 100644 --- a/src/openvg/qvgimagepool_p.h +++ b/src/openvg/qvgimagepool_p.h @@ -69,10 +69,6 @@ public: static QVGImagePool *instance(); - // This function can be used from system-specific graphics system - // plugins to alter the image allocation strategy. - static void setImagePool(QVGImagePool *pool); - // Create a new VGImage from the pool with the specified parameters // that is not associated with a pixmap. The VGImage is returned to // the pool when releaseImage() is called. diff --git a/src/plugins/bearer/symbian/qnetworksession_impl.cpp b/src/plugins/bearer/symbian/qnetworksession_impl.cpp index a7dad2b..58ce8fe 100644 --- a/src/plugins/bearer/symbian/qnetworksession_impl.cpp +++ b/src/plugins/bearer/symbian/qnetworksession_impl.cpp @@ -64,7 +64,7 @@ QNetworkSessionPrivateImpl::QNetworkSessionPrivateImpl(SymbianEngine *engine) ipConnectionNotifier(0), ipConnectionStarter(0), iHandleStateNotificationsFromManager(false), iFirstSync(true), iStoppedByUser(false), iClosedByUser(false), iError(QNetworkSession::UnknownSessionError), iALREnabled(0), - iConnectInBackground(false), isOpening(false) + iConnectInBackground(false), iCurrentIap(0), isOpening(false) { #ifdef SNAP_FUNCTIONALITY_AVAILABLE @@ -77,6 +77,7 @@ QNetworkSessionPrivateImpl::QNetworkSessionPrivateImpl(SymbianEngine *engine) void QNetworkSessionPrivateImpl::closeHandles() { QMutexLocker lock(&mutex); + updateCurrentIap(0); // Cancel Connection Progress Notifications first. // Note: ConnectionNotifier must be destroyed before RConnection::Close() // => deleting ipConnectionNotifier results RConnection::CancelProgressNotification() @@ -97,7 +98,6 @@ void QNetworkSessionPrivateImpl::closeHandles() QSymbianSocketManager::instance().setDefaultConnection(0); - iConnectionMonitor.Close(); #ifdef QT_BEARERMGMT_SYMBIAN_DEBUG qDebug() << "QNS this : " << QString::number((uint)this) << " - handles closed"; @@ -111,6 +111,7 @@ QNetworkSessionPrivateImpl::~QNetworkSessionPrivateImpl() isOpening = false; closeHandles(); + iConnectionMonitor.Close(); #ifdef QT_BEARERMGMT_SYMBIAN_DEBUG qDebug() << "QNS this : " << QString::number((uint)this) << " - destroyed"; @@ -637,6 +638,8 @@ void QNetworkSessionPrivateImpl::accept() QSymbianSocketManager::instance().setDefaultConnection(&iConnection); + updateCurrentIap(iNewRoamingIap); + newState(QNetworkSession::Connected, iNewRoamingIap); } #endif @@ -867,19 +870,31 @@ quint64 QNetworkSessionPrivateImpl::activeTime() const return startTime.secsTo(QDateTime::currentDateTime()); } -QNetworkConfiguration QNetworkSessionPrivateImpl::activeConfiguration(TUint32 iapId) const +bool QNetworkSessionPrivateImpl::activeIapId(TUint32& iapId) const { - if (iapId == 0) { - _LIT(KSetting, "IAP\\Id"); - iConnection.GetIntSetting(KSetting, iapId); + if (!iConnection.SubSessionHandle()) + return false; + _LIT(KSetting, "IAP\\Id"); + TInt err = iConnection.GetIntSetting(KSetting, iapId); + if (err != KErrNone) + return false; #ifdef SNAP_FUNCTIONALITY_AVAILABLE - // Check if this is an Easy WLAN configuration. On Symbian^3 RConnection may report - // the used configuration as 'EasyWLAN' IAP ID if someone has just opened the configuration - // from WLAN Scan dialog, _and_ that connection is still up. We need to find the - // real matching configuration. Function alters the Easy WLAN ID to real IAP ID (only if - // easy WLAN): - easyWlanTrueIapId(iapId); + // Check if this is an Easy WLAN configuration. On Symbian^3 RConnection may report + // the used configuration as 'EasyWLAN' IAP ID if someone has just opened the configuration + // from WLAN Scan dialog, _and_ that connection is still up. We need to find the + // real matching configuration. Function alters the Easy WLAN ID to real IAP ID (only if + // easy WLAN): + easyWlanTrueIapId(iapId); #endif + return true; +} + +QNetworkConfiguration QNetworkSessionPrivateImpl::activeConfiguration(TUint32 iapId) const +{ + if (iapId == 0) { + bool ok = activeIapId(iapId); + if (!ok) + return QNetworkConfiguration(); } #ifdef SNAP_FUNCTIONALITY_AVAILABLE @@ -1015,6 +1030,20 @@ QNetworkConfiguration QNetworkSessionPrivateImpl::activeConfiguration(TUint32 ia return publicConfig; } +void QNetworkSessionPrivateImpl::updateCurrentIap(TUint32 iapId) +{ + if (iCurrentIap == iapId) + return; + + if (iCurrentIap != 0) + QSymbianSocketManager::instance().removeActiveConnection(iCurrentIap); + + iCurrentIap = iapId; + + if (iCurrentIap != 0) + QSymbianSocketManager::instance().addActiveConnection(iCurrentIap); +} + void QNetworkSessionPrivateImpl::ConnectionStartComplete(TInt statusCode) { #ifdef QT_BEARERMGMT_SYMBIAN_DEBUG @@ -1028,7 +1057,10 @@ void QNetworkSessionPrivateImpl::ConnectionStartComplete(TInt statusCode) case KErrNone: // Connection created successfully { TInt error = KErrNone; - QNetworkConfiguration newActiveConfig = activeConfiguration(); + TUint32 iapId; + QNetworkConfiguration newActiveConfig; + if (activeIapId(iapId)) + newActiveConfig = activeConfiguration(iapId); if (!newActiveConfig.isValid()) { // RConnection startup was successful but no configuration // was found. That indicates that user has chosen to create a @@ -1038,6 +1070,7 @@ void QNetworkSessionPrivateImpl::ConnectionStartComplete(TInt statusCode) error = KErrGeneral; } else { QSymbianSocketManager::instance().setDefaultConnection(&iConnection); + updateCurrentIap(iapId); } if (error != KErrNone) { isOpen = false; diff --git a/src/plugins/bearer/symbian/qnetworksession_impl.h b/src/plugins/bearer/symbian/qnetworksession_impl.h index 17a051e..9e02e5b 100644 --- a/src/plugins/bearer/symbian/qnetworksession_impl.h +++ b/src/plugins/bearer/symbian/qnetworksession_impl.h @@ -143,6 +143,8 @@ private: void handleSymbianConnectionStatusChange(TInt aConnectionStatus, TInt aError, TUint accessPointId = 0); QNetworkConfiguration bestConfigFromSNAP(const QNetworkConfiguration& snapConfig) const; QNetworkConfiguration activeConfiguration(TUint32 iapId = 0) const; + bool activeIapId(TUint32 &iapId) const; + void updateCurrentIap(TUint32 iapId); #ifndef QT_NO_NETWORKINTERFACE QNetworkInterface interface(TUint iapId) const; #endif @@ -186,6 +188,7 @@ private: // data TUint32 iOldRoamingIap; TUint32 iNewRoamingIap; + TUint32 iCurrentIap; bool isOpening; diff --git a/src/plugins/imageformats/imageformats.pro b/src/plugins/imageformats/imageformats.pro index 5fff2de..54a2795 100644 --- a/src/plugins/imageformats/imageformats.pro +++ b/src/plugins/imageformats/imageformats.pro @@ -6,3 +6,4 @@ TEMPLATE = subdirs contains(QT_CONFIG, svg):SUBDIRS += svg !contains(QT_CONFIG, no-tiff):!contains(QT_CONFIG, tiff):SUBDIRS += tiff !contains(QT_CONFIG, no-ico):SUBDIRS += ico +!contains(QT_CONFIG, no-tga):SUBDIRS += tga diff --git a/src/plugins/imageformats/tga/main.cpp b/src/plugins/imageformats/tga/main.cpp new file mode 100644 index 0000000..5650be2 --- /dev/null +++ b/src/plugins/imageformats/tga/main.cpp @@ -0,0 +1,95 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the QtQuick3D module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QtGui/QImageIOHandler> +#include <QtCore/QDebug> + +#ifndef QT_NO_IMAGEFORMATPLUGIN + +#ifdef QT_NO_IMAGEFORMAT_TGA +#undef QT_NO_IMAGEFORMAT_TGA +#endif + +#include "qtgahandler.h" + +QT_BEGIN_NAMESPACE + +class QTgaPlugin : public QImageIOPlugin +{ +public: + Capabilities capabilities(QIODevice * device, const QByteArray & format) const; + QImageIOHandler * create(QIODevice * device, const QByteArray & format = QByteArray()) const; + QStringList keys() const; +}; + +QImageIOPlugin::Capabilities QTgaPlugin::capabilities(QIODevice *device, const QByteArray &format) const +{ + if (format == "tga") + return Capabilities(CanRead); + if (!format.isEmpty()) + return 0; + if (!device->isOpen()) + return 0; + + Capabilities cap; + if (device->isReadable() && QTgaHandler::canRead(device)) + cap |= CanRead; + return cap; +} + +QImageIOHandler* QTgaPlugin::create(QIODevice *device, const QByteArray &format) const +{ + QImageIOHandler *tgaHandler = new QTgaHandler(); + tgaHandler->setDevice(device); + tgaHandler->setFormat(format); + return tgaHandler; +} + +QStringList QTgaPlugin::keys() const +{ + return QStringList() << QLatin1String("tga"); +} + +Q_EXPORT_PLUGIN2(qtga, QTgaPlugin) + +QT_END_NAMESPACE + +#endif /* QT_NO_IMAGEFORMATPLUGIN */ diff --git a/src/plugins/imageformats/tga/qtgafile.cpp b/src/plugins/imageformats/tga/qtgafile.cpp new file mode 100644 index 0000000..885a63c --- /dev/null +++ b/src/plugins/imageformats/tga/qtgafile.cpp @@ -0,0 +1,266 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the QtQuick3D module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qtgafile.h" + +#include <QtCore/QIODevice> +#include <QtCore/QDebug> +#include <QtCore/QDateTime> + +struct TgaReader +{ + virtual ~TgaReader() {} + virtual QRgb operator()(QIODevice *s) const = 0; +}; + +struct Tga16Reader : public TgaReader +{ + ~Tga16Reader() {} + QRgb operator()(QIODevice *s) const + { + char ch1, ch2; + if (s->getChar(&ch1) && s->getChar(&ch2)) { + quint16 d = (int(ch1) & 0xFF) | ((int(ch2) & 0xFF) << 8); + QRgb result = (d & 0x8000) ? 0xFF000000 : 0x00000000; + result |= (d & 0x7C00 << 6) | (d & 0x03E0 << 3) | (d & 0x001F); + return result; + } else { + return 0; + } + } +}; + +struct Tga24Reader : public TgaReader +{ + QRgb operator()(QIODevice *s) const + { + char r, g, b; + if (s->getChar(&b) && s->getChar(&g) && s->getChar(&r)) + return qRgb(uchar(r), uchar(g), uchar(b)); + else + return 0; + } +}; + +struct Tga32Reader : public TgaReader +{ + QRgb operator()(QIODevice *s) const + { + char r, g, b, a; + if (s->getChar(&b) && s->getChar(&g) && s->getChar(&r) && s->getChar(&a)) + return qRgba(uchar(r), uchar(g), uchar(b), uchar(a)); + else + return 0; + } +}; + +/*! + \class QTgaFile + \since 4.8 + \internal + + File data container for a TrueVision Graphics format file. + + Format is as described here: + http://local.wasp.uwa.edu.au/~pbourke/dataformats/tga/ + http://netghost.narod.ru/gff2/graphics/summary/tga.htm + + Usage is: + \code + QTgaFile tga(myFile); + QImage tgaImage; + if (tga.isValid()) + tgaImage = tga.readImage(); + \endcode + + The class is designed to handle sequential and non-sequential + sources, so during construction the mHeader is read. Then during + the readImage() call the rest of the data is read. + + After passing myFile to the constructor, if the QIODevice *myFile + is read, or has seek() called, the results are undefined - so don't + do that. +*/ + +/*! + Construct a new QTgaFile object getting data from \a device. + + The object does not take ownership of the \a device, but until the + object is destroyed do not do any non-const operations, eg seek or + read on the device. +*/ +QTgaFile::QTgaFile(QIODevice *device) + : mDevice(device) +{ + ::memset(mHeader, 0, HeaderSize); + if (!mDevice->isReadable()) + { + mErrorMessage = QObject::tr("Could not read image data"); + return; + } + if (mDevice->isSequential()) + { + mErrorMessage = QObject::tr("Sequential device (eg socket) for image read not supported"); + return; + } + if (!mDevice->seek(0)) + { + mErrorMessage = QObject::tr("Seek file/device for image read failed"); + return; + } + int bytes = device->read((char*)mHeader, HeaderSize); + if (bytes != HeaderSize) + { + mErrorMessage = QObject::tr("Image mHeader read failed"); + return; + } + if (mHeader[ImageType] != 2) + { + // TODO: should support other image types + mErrorMessage = QObject::tr("Image type not supported"); + return; + } + int bitsPerPixel = mHeader[PixelDepth]; + bool validDepth = (bitsPerPixel == 16 || bitsPerPixel == 24 || bitsPerPixel == 32); + if (!validDepth) + { + mErrorMessage = QObject::tr("Image dpeth not valid"); + } + int curPos = mDevice->pos(); + int fileBytes = mDevice->size(); + if (!mDevice->seek(fileBytes - FooterSize)) + { + mErrorMessage = QObject::tr("Could not seek to image read footer"); + return; + } + char footer[FooterSize]; + bytes = mDevice->read((char*)footer, FooterSize); + if (bytes != FooterSize) + { + mErrorMessage = QObject::tr("Could not read footer"); + } + if (qstrncmp(&footer[SignatureOffset], "TRUEVISION-XFILE", 16) != 0) + { + mErrorMessage = QObject::tr("Image type (non-TrueVision 2.0) not supported"); + } + if (!mDevice->seek(curPos)) + { + mErrorMessage = QObject::tr("Could not reset to read data"); + } +} + +/*! + \internal + Destroy the device, recovering any resources. +*/ +QTgaFile::~QTgaFile() +{ +} + +/*! + \internal + Reads an image file from the QTgaFile's device, and returns it. + + This method seeks to the absolute position of the image data in the file, + so no assumptions are made about where the devices read pointer is when this + method is called. For this reason only random access devices are supported. + + If the constructor completed successfully, such that isValid() returns true, + then this method is likely to succeed, unless the file is somehow corrupted. + + In the case that the read fails, the QImage returned will be null, such that + QImage::isNull() will be true. +*/ +QImage QTgaFile::readImage() +{ + if (!isValid()) + return QImage(); + + int offset = mHeader[IdLength]; // Mostly always zero + + // Even in TrueColor files a color pallette may be present + if (mHeader[ColorMapType] == 1) + offset += littleEndianInt(&mHeader[CMapLength]) * littleEndianInt(&mHeader[CMapDepth]); + + mDevice->seek(HeaderSize + offset); + + char dummy; + for (int i = 0; i < offset; ++i) + mDevice->getChar(&dummy); + + int bitsPerPixel = mHeader[PixelDepth]; + int imageWidth = width(); + int imageHeight = height(); + + unsigned char desc = mHeader[ImageDescriptor]; + //unsigned char xCorner = desc & 0x10; // 0 = left, 1 = right + unsigned char yCorner = desc & 0x20; // 0 = lower, 1 = upper + + QImage im(imageWidth, imageHeight, QImage::Format_ARGB32); + TgaReader *reader = 0; + if (bitsPerPixel == 16) + reader = new Tga16Reader(); + else if (bitsPerPixel == 24) + reader = new Tga24Reader(); + else if (bitsPerPixel == 32) + reader = new Tga32Reader(); + TgaReader &read = *reader; + + // For now only deal with yCorner, since no one uses xCorner == 1 + // Also this is upside down, since Qt has the origin flipped + if (yCorner) + { + for (int y = 0; y < imageHeight; ++y) + for (int x = 0; x < imageWidth; ++x) + im.setPixel(x, y, read(mDevice)); + } + else + { + for (int y = imageHeight - 1; y >= 0; --y) + for (int x = 0; x < imageWidth; ++x) + im.setPixel(x, y, read(mDevice)); + } + + delete reader; + + // TODO: add processing of TGA extension information - ie TGA 2.0 files + return im; +} diff --git a/src/plugins/imageformats/tga/qtgafile.h b/src/plugins/imageformats/tga/qtgafile.h new file mode 100644 index 0000000..264c18b --- /dev/null +++ b/src/plugins/imageformats/tga/qtgafile.h @@ -0,0 +1,157 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the QtQuick3D module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTGAFILE_H +#define QTGAFILE_H + +#include <QtGui/QColor> +#include <QtGui/QImage> + +QT_BEGIN_NAMESPACE + +class QIODevice; + +class QTgaFile +{ +public: + enum Compression { + NoCompression = 0, + RleCompression = 1 + }; + + enum HeaderOffset { + IdLength = 0, /* 00h Size of Image ID field */ + ColorMapType = 1, /* 01h Color map type */ + ImageType = 2, /* 02h Image type code */ + CMapStart = 3, /* 03h Color map origin */ + CMapLength = 5, /* 05h Color map length */ + CMapDepth = 7, /* 07h Depth of color map entries */ + XOffset = 8, /* 08h X origin of image */ + YOffset = 10, /* 0Ah Y origin of image */ + Width = 12, /* 0Ch Width of image */ + Height = 14, /* 0Eh Height of image */ + PixelDepth = 16, /* 10h Image pixel size */ + ImageDescriptor = 17, /* 11h Image descriptor byte */ + HeaderSize = 18 + }; + + enum FooterOffset { + ExtensionOffset = 0, + DeveloperOffset = 4, + SignatureOffset = 8, + FooterSize = 26 + }; + + QTgaFile(QIODevice *); + ~QTgaFile(); + + inline bool isValid() const; + inline QString errorMessage() const; + QImage readImage(); + inline int xOffset() const; + inline int yOffset() const; + inline int width() const; + inline int height() const; + inline QSize size() const; + inline Compression compression() const; + +private: + static inline quint16 littleEndianInt(const unsigned char *d); + + QString mErrorMessage; + unsigned char mHeader[HeaderSize]; + QIODevice *mDevice; +}; + +inline bool QTgaFile::isValid() const +{ + return mErrorMessage.isEmpty(); +} + +inline QString QTgaFile::errorMessage() const +{ + return mErrorMessage; +} + +/*! + \internal + Returns the integer encoded in the two little endian bytes at \a d. +*/ +inline quint16 QTgaFile::littleEndianInt(const unsigned char *d) +{ + return d[0] + d[1] * 256; +} + +inline int QTgaFile::xOffset() const +{ + return littleEndianInt(&mHeader[XOffset]); +} + +inline int QTgaFile::yOffset() const +{ + return littleEndianInt(&mHeader[YOffset]); +} + +inline int QTgaFile::width() const +{ + return littleEndianInt(&mHeader[Width]); +} + +inline int QTgaFile::height() const +{ + return littleEndianInt(&mHeader[Height]); +} + +inline QSize QTgaFile::size() const +{ + return QSize(width(), height()); +} + +inline QTgaFile::Compression QTgaFile::compression() const +{ + // TODO: for now, only handle type 2 files, with no color table + // and no compression + return NoCompression; +} + +QT_END_NAMESPACE + +#endif // QTGAFILE_H diff --git a/src/plugins/imageformats/tga/qtgahandler.cpp b/src/plugins/imageformats/tga/qtgahandler.cpp new file mode 100644 index 0000000..ddea4f2 --- /dev/null +++ b/src/plugins/imageformats/tga/qtgahandler.cpp @@ -0,0 +1,122 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the QtQuick3D module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qtgahandler.h" +#include "qtgafile.h" + +#include <QtCore/QVariant> +#include <QtCore/QDebug> +#include <QtGui/QImage> + +QT_BEGIN_NAMESPACE + +QTgaHandler::QTgaHandler() + : QImageIOHandler() + , tga(0) +{ +} + +QTgaHandler::~QTgaHandler() +{ + delete tga; +} + +bool QTgaHandler::canRead() const +{ + if (!tga) + tga = new QTgaFile(device()); + if (tga->isValid()) + { + setFormat("tga"); + return true; + } + return false; +} + +bool QTgaHandler::canRead(QIODevice *device) +{ + if (!device) { + qWarning("QTgaHandler::canRead() called with no device"); + return false; + } + QTgaFile tga(device); + return tga.isValid(); +} + +bool QTgaHandler::read(QImage *image) +{ + if (!canRead()) + return false; + *image = tga->readImage(); + return !image->isNull(); +} + +QByteArray QTgaHandler::name() const +{ + return "tga"; +} + +QVariant QTgaHandler::option(ImageOption option) const +{ + if (option == Size && canRead()) { + return tga->size(); + } else if (option == CompressionRatio) { + return tga->compression(); + } else if (option == ImageFormat) { + return QImage::Format_ARGB32; + } + return QVariant(); +} + +void QTgaHandler::setOption(ImageOption option, const QVariant &value) +{ + Q_UNUSED(option); + Q_UNUSED(value); +} + +bool QTgaHandler::supportsOption(ImageOption option) const +{ + return option == CompressionRatio + || option == Size + || option == ImageFormat; +} + +QT_END_NAMESPACE diff --git a/src/plugins/imageformats/tga/qtgahandler.h b/src/plugins/imageformats/tga/qtgahandler.h new file mode 100644 index 0000000..f0eb2b0 --- /dev/null +++ b/src/plugins/imageformats/tga/qtgahandler.h @@ -0,0 +1,74 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the QtQuick3D module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTGAHANDLER_H +#define QTGAHANDLER_H + +#include <QtGui/QImageIOHandler> + +QT_BEGIN_NAMESPACE + +class QTgaFile; + +class QTgaHandler : public QImageIOHandler +{ +public: + QTgaHandler(); + ~QTgaHandler(); + + bool canRead() const; + bool read(QImage *image); + + QByteArray name() const; + + static bool canRead(QIODevice *device); + + QVariant option(ImageOption option) const; + void setOption(ImageOption option, const QVariant &value); + bool supportsOption(ImageOption option) const; + +private: + mutable QTgaFile *tga; +}; + +QT_END_NAMESPACE + +#endif // QTGAHANDLER_H diff --git a/src/plugins/imageformats/tga/tga.pro b/src/plugins/imageformats/tga/tga.pro new file mode 100644 index 0000000..292d06e --- /dev/null +++ b/src/plugins/imageformats/tga/tga.pro @@ -0,0 +1,16 @@ +TARGET = qtga +include(../../qpluginbase.pri) + +QTDIR_build:REQUIRES = "!contains(QT_CONFIG, no-tga)" + +HEADERS += qtgahandler.h \ + qtgafile.h +SOURCES += main.cpp \ + qtgahandler.cpp \ + qtgafile.cpp + +QTDIR_build:DESTDIR = $$QT_BUILD_TREE/plugins/imageformats +target.path += $$[QT_INSTALL_PLUGINS]/imageformats +INSTALLS += target + +symbian: TARGET.UID3=0x20031E99 diff --git a/src/plugins/inputmethods/imsw-multi/qmultiinputcontext.cpp b/src/plugins/inputmethods/imsw-multi/qmultiinputcontext.cpp index 258d586..25abe17 100644 --- a/src/plugins/inputmethods/imsw-multi/qmultiinputcontext.cpp +++ b/src/plugins/inputmethods/imsw-multi/qmultiinputcontext.cpp @@ -46,7 +46,7 @@ ** Copyright (C) 2004 immodule for Qt Project. All rights reserved. ** ** This file is written to contribute to Nokia Corporation and/or its subsidiary(-ies) under their own -** licence. You may use this file under your Qt license. Following +** license. You may use this file under your Qt license. Following ** description is copied from their original file headers. Contact ** immodule-qt@freedesktop.org if any conditions of this licensing are ** not clear to you. diff --git a/src/plugins/inputmethods/imsw-multi/qmultiinputcontext.h b/src/plugins/inputmethods/imsw-multi/qmultiinputcontext.h index 5d311b3..cc1b1f0 100644 --- a/src/plugins/inputmethods/imsw-multi/qmultiinputcontext.h +++ b/src/plugins/inputmethods/imsw-multi/qmultiinputcontext.h @@ -46,7 +46,7 @@ ** Copyright (C) 2004 immodule for Qt Project. All rights reserved. ** ** This file is written to contribute to Nokia Corporation and/or its subsidiary(-ies) under their own -** licence. You may use this file under your Qt license. Following +** license. You may use this file under your Qt license. Following ** description is copied from their original file headers. Contact ** immodule-qt@freedesktop.org if any conditions of this licensing are ** not clear to you. diff --git a/src/plugins/platforms/openkode/qopenkodewindow.cpp b/src/plugins/platforms/openkode/qopenkodewindow.cpp index c6fe6d0..dedd2d5 100644 --- a/src/plugins/platforms/openkode/qopenkodewindow.cpp +++ b/src/plugins/platforms/openkode/qopenkodewindow.cpp @@ -283,7 +283,7 @@ void QOpenKODEWindow::processKeyEvents(const KDEvent *event) QEvent::Type keyPressed = QEvent::KeyRelease; if (event->data.keyboardInputKey.flags) keyPressed = QEvent::KeyPress; -//KD_KEY_LOCATION_LEFT_ATX // dont care for now +//KD_KEY_LOCATION_LEFT_ATX // don't care for now //KD_KEY_LOCATION_RIGHT_ATX //KD_KEY_LOCATION_NUMPAD_ATX Qt::KeyboardModifiers mod = Qt::NoModifier; diff --git a/src/plugins/platforms/uikit/examples/flickrdemo/flickrdemo.xcodeproj/project.pbxproj b/src/plugins/platforms/uikit/examples/flickrdemo/flickrdemo.xcodeproj/project.pbxproj index dedc462..dedc462 100755..100644 --- a/src/plugins/platforms/uikit/examples/flickrdemo/flickrdemo.xcodeproj/project.pbxproj +++ b/src/plugins/platforms/uikit/examples/flickrdemo/flickrdemo.xcodeproj/project.pbxproj diff --git a/src/plugins/platforms/uikit/examples/qmltest/qmltest.xcodeproj/project.pbxproj b/src/plugins/platforms/uikit/examples/qmltest/qmltest.xcodeproj/project.pbxproj index 021eed2..021eed2 100755..100644 --- a/src/plugins/platforms/uikit/examples/qmltest/qmltest.xcodeproj/project.pbxproj +++ b/src/plugins/platforms/uikit/examples/qmltest/qmltest.xcodeproj/project.pbxproj diff --git a/src/plugins/platforms/xcb/qxcbconnection.cpp b/src/plugins/platforms/xcb/qxcbconnection.cpp index 80a1624..4f3021e 100644 --- a/src/plugins/platforms/xcb/qxcbconnection.cpp +++ b/src/plugins/platforms/xcb/qxcbconnection.cpp @@ -59,7 +59,7 @@ #include <X11/Xlib-xcb.h> #endif -#ifdef XCB_USE_EGL //dont pull in eglext prototypes +#ifdef XCB_USE_EGL //don't pull in eglext prototypes #include <EGL/egl.h> #endif diff --git a/src/s60installs/bwins/QtCoreu.def b/src/s60installs/bwins/QtCoreu.def index 9181dd7..cfd2cec 100644 --- a/src/s60installs/bwins/QtCoreu.def +++ b/src/s60installs/bwins/QtCoreu.def @@ -4885,4 +4885,8 @@ EXPORTS ?updateDir@QFactoryLoader@@QAEXABVQString@@AAVQSettings@@@Z @ 4884 NONAME ; void QFactoryLoader::updateDir(class QString const &, class QSettings &) ?disconnectNotify@QFutureWatcherBase@@MAEXPBD@Z @ 4885 NONAME ; void QFutureWatcherBase::disconnectNotify(char const *) ?maybeQueueForLater@QActiveObject@@QAE_NXZ @ 4886 NONAME ; bool QActiveObject::maybeQueueForLater(void) + ?activeConnections@QSymbianSocketManager@@QBE?AV?$QList@K@@XZ @ 4887 NONAME ; class QList<unsigned long> QSymbianSocketManager::activeConnections(void) const + ?removeActiveConnection@QSymbianSocketManager@@QAEXK@Z @ 4888 NONAME ; void QSymbianSocketManager::removeActiveConnection(unsigned long) + ?addActiveConnection@QSymbianSocketManager@@QAEXK@Z @ 4889 NONAME ; void QSymbianSocketManager::addActiveConnection(unsigned long) + ?activeObjectError@QEventDispatcherSymbian@@QAEXH@Z @ 4890 NONAME ; void QEventDispatcherSymbian::activeObjectError(int) diff --git a/src/s60installs/bwins/QtGuiu.def b/src/s60installs/bwins/QtGuiu.def index cf6b0da..4e0d7df 100644 --- a/src/s60installs/bwins/QtGuiu.def +++ b/src/s60installs/bwins/QtGuiu.def @@ -13118,233 +13118,233 @@ EXPORTS ?aboutToReleaseGpuResources@QApplication@@IAEXXZ @ 13117 NONAME ; void QApplication::aboutToReleaseGpuResources(void) ?emitAboutToUseGpuResources@QApplicationPrivate@@QAEXXZ @ 13118 NONAME ; void QApplicationPrivate::emitAboutToUseGpuResources(void) ?emitAboutToReleaseGpuResources@QApplicationPrivate@@QAEXXZ @ 13119 NONAME ; void QApplicationPrivate::emitAboutToReleaseGpuResources(void) - png_access_version_number @ 13120 NONAME - png_benign_error @ 13121 NONAME - png_build_grayscale_palette @ 13122 NONAME - png_calloc @ 13123 NONAME - png_chunk_benign_error @ 13124 NONAME - png_chunk_error @ 13125 NONAME - png_chunk_warning @ 13126 NONAME - png_convert_from_struct_tm @ 13127 NONAME - png_convert_from_time_t @ 13128 NONAME - png_convert_to_rfc1123 @ 13129 NONAME - png_create_info_struct @ 13130 NONAME - png_create_read_struct @ 13131 NONAME - png_create_read_struct_2 @ 13132 NONAME - png_create_write_struct @ 13133 NONAME - png_create_write_struct_2 @ 13134 NONAME - png_data_freer @ 13135 NONAME - png_destroy_info_struct @ 13136 NONAME - png_destroy_read_struct @ 13137 NONAME - png_destroy_write_struct @ 13138 NONAME - png_error @ 13139 NONAME - png_free @ 13140 NONAME - png_free_data @ 13141 NONAME - png_free_default @ 13142 NONAME - png_get_IHDR @ 13143 NONAME - png_get_PLTE @ 13144 NONAME - png_get_bKGD @ 13145 NONAME - png_get_bit_depth @ 13146 NONAME - png_get_cHRM @ 13147 NONAME - png_get_cHRM_fixed @ 13148 NONAME - png_get_channels @ 13149 NONAME - png_get_chunk_cache_max @ 13150 NONAME - png_get_chunk_malloc_max @ 13151 NONAME - png_get_color_type @ 13152 NONAME - png_get_compression_buffer_size @ 13153 NONAME - png_get_compression_type @ 13154 NONAME - png_get_copyright @ 13155 NONAME - png_get_current_pass_number @ 13156 NONAME - png_get_current_row_number @ 13157 NONAME - png_get_error_ptr @ 13158 NONAME - png_get_filter_type @ 13159 NONAME - png_get_gAMA @ 13160 NONAME - png_get_gAMA_fixed @ 13161 NONAME - png_get_hIST @ 13162 NONAME - png_get_header_ver @ 13163 NONAME - png_get_header_version @ 13164 NONAME - png_get_iCCP @ 13165 NONAME - png_get_image_height @ 13166 NONAME - png_get_image_width @ 13167 NONAME - png_get_int_32 @ 13168 NONAME - png_get_interlace_type @ 13169 NONAME - png_get_io_chunk_name @ 13170 NONAME - png_get_io_chunk_type @ 13171 NONAME - png_get_io_ptr @ 13172 NONAME - png_get_io_state @ 13173 NONAME - png_get_libpng_ver @ 13174 NONAME - png_get_mem_ptr @ 13175 NONAME - png_get_oFFs @ 13176 NONAME - png_get_pCAL @ 13177 NONAME - png_get_pHYs @ 13178 NONAME - png_get_pHYs_dpi @ 13179 NONAME - png_get_pixel_aspect_ratio @ 13180 NONAME - png_get_pixel_aspect_ratio_fixed @ 13181 NONAME - png_get_pixels_per_inch @ 13182 NONAME - png_get_pixels_per_meter @ 13183 NONAME - png_get_progressive_ptr @ 13184 NONAME - png_get_rgb_to_gray_status @ 13185 NONAME - png_get_rowbytes @ 13186 NONAME - png_get_rows @ 13187 NONAME - png_get_sBIT @ 13188 NONAME - png_get_sCAL @ 13189 NONAME - png_get_sCAL_fixed @ 13190 NONAME - png_get_sCAL_s @ 13191 NONAME - png_get_sPLT @ 13192 NONAME - png_get_sRGB @ 13193 NONAME - png_get_signature @ 13194 NONAME - png_get_tIME @ 13195 NONAME - png_get_tRNS @ 13196 NONAME - png_get_text @ 13197 NONAME - png_get_uint_16 @ 13198 NONAME - png_get_uint_31 @ 13199 NONAME - png_get_uint_32 @ 13200 NONAME - png_get_unknown_chunks @ 13201 NONAME - png_get_user_chunk_ptr @ 13202 NONAME - png_get_user_height_max @ 13203 NONAME - png_get_user_transform_ptr @ 13204 NONAME - png_get_user_width_max @ 13205 NONAME - png_get_valid @ 13206 NONAME - png_get_x_offset_inches @ 13207 NONAME - png_get_x_offset_inches_fixed @ 13208 NONAME - png_get_x_offset_microns @ 13209 NONAME - png_get_x_offset_pixels @ 13210 NONAME - png_get_x_pixels_per_inch @ 13211 NONAME - png_get_x_pixels_per_meter @ 13212 NONAME - png_get_y_offset_inches @ 13213 NONAME - png_get_y_offset_inches_fixed @ 13214 NONAME - png_get_y_offset_microns @ 13215 NONAME - png_get_y_offset_pixels @ 13216 NONAME - png_get_y_pixels_per_inch @ 13217 NONAME - png_get_y_pixels_per_meter @ 13218 NONAME - png_handle_as_unknown @ 13219 NONAME - png_info_init_3 @ 13220 NONAME - png_init_io @ 13221 NONAME - png_longjmp @ 13222 NONAME - png_malloc @ 13223 NONAME - png_malloc_default @ 13224 NONAME - png_malloc_warn @ 13225 NONAME - png_permit_mng_features @ 13226 NONAME - png_process_data @ 13227 NONAME - png_process_data_pause @ 13228 NONAME - png_process_data_skip @ 13229 NONAME - png_progressive_combine_row @ 13230 NONAME - png_read_end @ 13231 NONAME - png_read_image @ 13232 NONAME - png_read_info @ 13233 NONAME - png_read_png @ 13234 NONAME - png_read_row @ 13235 NONAME - png_read_rows @ 13236 NONAME - png_read_update_info @ 13237 NONAME - png_reset_zstream @ 13238 NONAME - png_save_int_32 @ 13239 NONAME - png_save_uint_16 @ 13240 NONAME - png_save_uint_32 @ 13241 NONAME - png_set_IHDR @ 13242 NONAME - png_set_PLTE @ 13243 NONAME - png_set_add_alpha @ 13244 NONAME - png_set_alpha_mode @ 13245 NONAME - png_set_alpha_mode_fixed @ 13246 NONAME - png_set_bKGD @ 13247 NONAME - png_set_background @ 13248 NONAME - png_set_background_fixed @ 13249 NONAME - png_set_benign_errors @ 13250 NONAME - png_set_bgr @ 13251 NONAME - png_set_cHRM @ 13252 NONAME - png_set_cHRM_fixed @ 13253 NONAME - png_set_chunk_cache_max @ 13254 NONAME - png_set_chunk_malloc_max @ 13255 NONAME - png_set_compression_buffer_size @ 13256 NONAME - png_set_compression_level @ 13257 NONAME - png_set_compression_mem_level @ 13258 NONAME - png_set_compression_method @ 13259 NONAME - png_set_compression_strategy @ 13260 NONAME - png_set_compression_window_bits @ 13261 NONAME - png_set_crc_action @ 13262 NONAME - png_set_error_fn @ 13263 NONAME - png_set_expand @ 13264 NONAME - png_set_expand_16 @ 13265 NONAME - png_set_expand_gray_1_2_4_to_8 @ 13266 NONAME - png_set_filler @ 13267 NONAME - png_set_filter @ 13268 NONAME - png_set_filter_heuristics @ 13269 NONAME - png_set_filter_heuristics_fixed @ 13270 NONAME - png_set_flush @ 13271 NONAME - png_set_gAMA @ 13272 NONAME - png_set_gAMA_fixed @ 13273 NONAME - png_set_gamma @ 13274 NONAME - png_set_gamma_fixed @ 13275 NONAME - png_set_gray_to_rgb @ 13276 NONAME - png_set_hIST @ 13277 NONAME - png_set_iCCP @ 13278 NONAME - png_set_interlace_handling @ 13279 NONAME - png_set_invalid @ 13280 NONAME - png_set_invert_alpha @ 13281 NONAME - png_set_invert_mono @ 13282 NONAME - png_set_keep_unknown_chunks @ 13283 NONAME - png_set_longjmp_fn @ 13284 NONAME - png_set_mem_fn @ 13285 NONAME - png_set_oFFs @ 13286 NONAME - png_set_pCAL @ 13287 NONAME - png_set_pHYs @ 13288 NONAME - png_set_packing @ 13289 NONAME - png_set_packswap @ 13290 NONAME - png_set_palette_to_rgb @ 13291 NONAME - png_set_progressive_read_fn @ 13292 NONAME - png_set_quantize @ 13293 NONAME - png_set_read_fn @ 13294 NONAME - png_set_read_status_fn @ 13295 NONAME - png_set_read_user_chunk_fn @ 13296 NONAME - png_set_read_user_transform_fn @ 13297 NONAME - png_set_rgb_to_gray @ 13298 NONAME - png_set_rgb_to_gray_fixed @ 13299 NONAME - png_set_rows @ 13300 NONAME - png_set_sBIT @ 13301 NONAME - png_set_sCAL @ 13302 NONAME - png_set_sCAL_fixed @ 13303 NONAME - png_set_sCAL_s @ 13304 NONAME - png_set_sPLT @ 13305 NONAME - png_set_sRGB @ 13306 NONAME - png_set_sRGB_gAMA_and_cHRM @ 13307 NONAME - png_set_scale_16 @ 13308 NONAME - png_set_shift @ 13309 NONAME - png_set_sig_bytes @ 13310 NONAME - png_set_strip_16 @ 13311 NONAME - png_set_strip_alpha @ 13312 NONAME - png_set_swap @ 13313 NONAME - png_set_swap_alpha @ 13314 NONAME - png_set_tIME @ 13315 NONAME - png_set_tRNS @ 13316 NONAME - png_set_tRNS_to_alpha @ 13317 NONAME - png_set_text @ 13318 NONAME - png_set_text_compression_level @ 13319 NONAME - png_set_text_compression_mem_level @ 13320 NONAME - png_set_text_compression_method @ 13321 NONAME - png_set_text_compression_strategy @ 13322 NONAME - png_set_text_compression_window_bits @ 13323 NONAME - png_set_unknown_chunk_location @ 13324 NONAME - png_set_unknown_chunks @ 13325 NONAME - png_set_user_limits @ 13326 NONAME - png_set_user_transform_info @ 13327 NONAME - png_set_write_fn @ 13328 NONAME - png_set_write_status_fn @ 13329 NONAME - png_set_write_user_transform_fn @ 13330 NONAME - png_sig_cmp @ 13331 NONAME - png_start_read_image @ 13332 NONAME - png_warning @ 13333 NONAME - png_write_chunk @ 13334 NONAME - png_write_chunk_data @ 13335 NONAME - png_write_chunk_end @ 13336 NONAME - png_write_chunk_start @ 13337 NONAME - png_write_end @ 13338 NONAME - png_write_flush @ 13339 NONAME - png_write_image @ 13340 NONAME - png_write_info @ 13341 NONAME - png_write_info_before_PLTE @ 13342 NONAME - png_write_png @ 13343 NONAME - png_write_row @ 13344 NONAME - png_write_rows @ 13345 NONAME - png_write_sig @ 13346 NONAME + ?png_access_version_number@PrivatePng@@YAIXZ @ 13120 NONAME ; unsigned int PrivatePng::png_access_version_number(void) + ?png_benign_error@PrivatePng@@YAXPAUpng_struct_def@1@PBD@Z @ 13121 NONAME ; void PrivatePng::png_benign_error(struct PrivatePng::png_struct_def *, char const *) + ?png_build_grayscale_palette@PrivatePng@@YAXHPAUpng_color_struct@1@@Z @ 13122 NONAME ; void PrivatePng::png_build_grayscale_palette(int, struct PrivatePng::png_color_struct *) + ?png_calloc@PrivatePng@@YAPAXPAUpng_struct_def@1@I@Z @ 13123 NONAME ; void * PrivatePng::png_calloc(struct PrivatePng::png_struct_def *, unsigned int) + ?png_chunk_benign_error@PrivatePng@@YAXPAUpng_struct_def@1@PBD@Z @ 13124 NONAME ; void PrivatePng::png_chunk_benign_error(struct PrivatePng::png_struct_def *, char const *) + ?png_chunk_error@PrivatePng@@YAXPAUpng_struct_def@1@PBD@Z @ 13125 NONAME ; void PrivatePng::png_chunk_error(struct PrivatePng::png_struct_def *, char const *) + ?png_chunk_warning@PrivatePng@@YAXPAUpng_struct_def@1@PBD@Z @ 13126 NONAME ; void PrivatePng::png_chunk_warning(struct PrivatePng::png_struct_def *, char const *) + ?png_convert_from_struct_tm@PrivatePng@@YAXPAUpng_time_struct@1@PBUtm@@@Z @ 13127 NONAME ; void PrivatePng::png_convert_from_struct_tm(struct PrivatePng::png_time_struct *, struct tm const *) + ?png_convert_from_time_t@PrivatePng@@YAXPAUpng_time_struct@1@H@Z @ 13128 NONAME ; void PrivatePng::png_convert_from_time_t(struct PrivatePng::png_time_struct *, int) + ?png_convert_to_rfc1123@PrivatePng@@YAPBDPAUpng_struct_def@1@PBUpng_time_struct@1@@Z @ 13129 NONAME ; char const * PrivatePng::png_convert_to_rfc1123(struct PrivatePng::png_struct_def *, struct PrivatePng::png_time_struct const *) + ?png_create_info_struct@PrivatePng@@YAPAUpng_info_def@1@PAUpng_struct_def@1@@Z @ 13130 NONAME ; struct PrivatePng::png_info_def * PrivatePng::png_create_info_struct(struct PrivatePng::png_struct_def *) + ?png_create_read_struct@PrivatePng@@YAPAUpng_struct_def@1@PBDPAXP6AXPAU21@0@ZP6AX20@Z@Z @ 13131 NONAME ; struct PrivatePng::png_struct_def * PrivatePng::png_create_read_struct(char const *, void *, void (*)(struct PrivatePng::png_struct_def *, char const *), void (*)(struct PrivatePng::png_struct_def *, char const *)) + ?png_create_read_struct_2@PrivatePng@@YAPAUpng_struct_def@1@PBDPAXP6AXPAU21@0@ZP6AX20@Z1P6APAX2I@ZP6AX21@Z@Z @ 13132 NONAME ; struct PrivatePng::png_struct_def * PrivatePng::png_create_read_struct_2(char const *, void *, void (*)(struct PrivatePng::png_struct_def *, char const *), void (*)(struct PrivatePng::png_struct_def *, char const *), void *, void * (*)(struct PrivatePng::png_struct_def *, unsigned int), void (*)(struct PrivatePng::png_struct_def *, void *)) + ?png_create_write_struct@PrivatePng@@YAPAUpng_struct_def@1@PBDPAXP6AXPAU21@0@ZP6AX20@Z@Z @ 13133 NONAME ; struct PrivatePng::png_struct_def * PrivatePng::png_create_write_struct(char const *, void *, void (*)(struct PrivatePng::png_struct_def *, char const *), void (*)(struct PrivatePng::png_struct_def *, char const *)) + ?png_create_write_struct_2@PrivatePng@@YAPAUpng_struct_def@1@PBDPAXP6AXPAU21@0@ZP6AX20@Z1P6APAX2I@ZP6AX21@Z@Z @ 13134 NONAME ; struct PrivatePng::png_struct_def * PrivatePng::png_create_write_struct_2(char const *, void *, void (*)(struct PrivatePng::png_struct_def *, char const *), void (*)(struct PrivatePng::png_struct_def *, char const *), void *, void * (*)(struct PrivatePng::png_struct_def *, unsigned int), void (*)(struct PrivatePng::png_struct_def *, void *)) + ?png_data_freer@PrivatePng@@YAXPAUpng_struct_def@1@PAUpng_info_def@1@HI@Z @ 13135 NONAME ; void PrivatePng::png_data_freer(struct PrivatePng::png_struct_def *, struct PrivatePng::png_info_def *, int, unsigned int) + ?png_destroy_info_struct@PrivatePng@@YAXPAUpng_struct_def@1@PAPAUpng_info_def@1@@Z @ 13136 NONAME ; void PrivatePng::png_destroy_info_struct(struct PrivatePng::png_struct_def *, struct PrivatePng::png_info_def * *) + ?png_destroy_read_struct@PrivatePng@@YAXPAPAUpng_struct_def@1@PAPAUpng_info_def@1@1@Z @ 13137 NONAME ; void PrivatePng::png_destroy_read_struct(struct PrivatePng::png_struct_def * *, struct PrivatePng::png_info_def * *, struct PrivatePng::png_info_def * *) + ?png_destroy_write_struct@PrivatePng@@YAXPAPAUpng_struct_def@1@PAPAUpng_info_def@1@@Z @ 13138 NONAME ; void PrivatePng::png_destroy_write_struct(struct PrivatePng::png_struct_def * *, struct PrivatePng::png_info_def * *) + ?png_error@PrivatePng@@YAXPAUpng_struct_def@1@PBD@Z @ 13139 NONAME ; void PrivatePng::png_error(struct PrivatePng::png_struct_def *, char const *) + ?png_free@PrivatePng@@YAXPAUpng_struct_def@1@PAX@Z @ 13140 NONAME ; void PrivatePng::png_free(struct PrivatePng::png_struct_def *, void *) + ?png_free_data@PrivatePng@@YAXPAUpng_struct_def@1@PAUpng_info_def@1@IH@Z @ 13141 NONAME ; void PrivatePng::png_free_data(struct PrivatePng::png_struct_def *, struct PrivatePng::png_info_def *, unsigned int, int) + ?png_free_default@PrivatePng@@YAXPAUpng_struct_def@1@PAX@Z @ 13142 NONAME ; void PrivatePng::png_free_default(struct PrivatePng::png_struct_def *, void *) + ?png_get_IHDR@PrivatePng@@YAIPAUpng_struct_def@1@PAUpng_info_def@1@PAI2PAH3333@Z @ 13143 NONAME ; unsigned int PrivatePng::png_get_IHDR(struct PrivatePng::png_struct_def *, struct PrivatePng::png_info_def *, unsigned int *, unsigned int *, int *, int *, int *, int *, int *) + ?png_get_PLTE@PrivatePng@@YAIPBUpng_struct_def@1@PBUpng_info_def@1@PAPAUpng_color_struct@1@PAH@Z @ 13144 NONAME ; unsigned int PrivatePng::png_get_PLTE(struct PrivatePng::png_struct_def const *, struct PrivatePng::png_info_def const *, struct PrivatePng::png_color_struct * *, int *) + ?png_get_bKGD@PrivatePng@@YAIPBUpng_struct_def@1@PAUpng_info_def@1@PAPAUpng_color_16_struct@1@@Z @ 13145 NONAME ; unsigned int PrivatePng::png_get_bKGD(struct PrivatePng::png_struct_def const *, struct PrivatePng::png_info_def *, struct PrivatePng::png_color_16_struct * *) + ?png_get_bit_depth@PrivatePng@@YAEPBUpng_struct_def@1@PBUpng_info_def@1@@Z @ 13146 NONAME ; unsigned char PrivatePng::png_get_bit_depth(struct PrivatePng::png_struct_def const *, struct PrivatePng::png_info_def const *) + ?png_get_cHRM@PrivatePng@@YAIPBUpng_struct_def@1@PBUpng_info_def@1@PAN2222222@Z @ 13147 NONAME ; unsigned int PrivatePng::png_get_cHRM(struct PrivatePng::png_struct_def const *, struct PrivatePng::png_info_def const *, double *, double *, double *, double *, double *, double *, double *, double *) + ?png_get_cHRM_fixed@PrivatePng@@YAIPBUpng_struct_def@1@PBUpng_info_def@1@PAH2222222@Z @ 13148 NONAME ; unsigned int PrivatePng::png_get_cHRM_fixed(struct PrivatePng::png_struct_def const *, struct PrivatePng::png_info_def const *, int *, int *, int *, int *, int *, int *, int *, int *) + ?png_get_channels@PrivatePng@@YAEPBUpng_struct_def@1@PBUpng_info_def@1@@Z @ 13149 NONAME ; unsigned char PrivatePng::png_get_channels(struct PrivatePng::png_struct_def const *, struct PrivatePng::png_info_def const *) + ?png_get_chunk_cache_max@PrivatePng@@YAIPBUpng_struct_def@1@@Z @ 13150 NONAME ; unsigned int PrivatePng::png_get_chunk_cache_max(struct PrivatePng::png_struct_def const *) + ?png_get_chunk_malloc_max@PrivatePng@@YAIPBUpng_struct_def@1@@Z @ 13151 NONAME ; unsigned int PrivatePng::png_get_chunk_malloc_max(struct PrivatePng::png_struct_def const *) + ?png_get_color_type@PrivatePng@@YAEPBUpng_struct_def@1@PBUpng_info_def@1@@Z @ 13152 NONAME ; unsigned char PrivatePng::png_get_color_type(struct PrivatePng::png_struct_def const *, struct PrivatePng::png_info_def const *) + ?png_get_compression_buffer_size@PrivatePng@@YAIPBUpng_struct_def@1@@Z @ 13153 NONAME ; unsigned int PrivatePng::png_get_compression_buffer_size(struct PrivatePng::png_struct_def const *) + ?png_get_compression_type@PrivatePng@@YAEPBUpng_struct_def@1@PBUpng_info_def@1@@Z @ 13154 NONAME ; unsigned char PrivatePng::png_get_compression_type(struct PrivatePng::png_struct_def const *, struct PrivatePng::png_info_def const *) + ?png_get_copyright@PrivatePng@@YAPBDPBUpng_struct_def@1@@Z @ 13155 NONAME ; char const * PrivatePng::png_get_copyright(struct PrivatePng::png_struct_def const *) + ?png_get_current_pass_number@PrivatePng@@YAEPBUpng_struct_def@1@@Z @ 13156 NONAME ; unsigned char PrivatePng::png_get_current_pass_number(struct PrivatePng::png_struct_def const *) + ?png_get_current_row_number@PrivatePng@@YAIPBUpng_struct_def@1@@Z @ 13157 NONAME ; unsigned int PrivatePng::png_get_current_row_number(struct PrivatePng::png_struct_def const *) + ?png_get_error_ptr@PrivatePng@@YAPAXPBUpng_struct_def@1@@Z @ 13158 NONAME ; void * PrivatePng::png_get_error_ptr(struct PrivatePng::png_struct_def const *) + ?png_get_filter_type@PrivatePng@@YAEPBUpng_struct_def@1@PBUpng_info_def@1@@Z @ 13159 NONAME ; unsigned char PrivatePng::png_get_filter_type(struct PrivatePng::png_struct_def const *, struct PrivatePng::png_info_def const *) + ?png_get_gAMA@PrivatePng@@YAIPBUpng_struct_def@1@PBUpng_info_def@1@PAN@Z @ 13160 NONAME ; unsigned int PrivatePng::png_get_gAMA(struct PrivatePng::png_struct_def const *, struct PrivatePng::png_info_def const *, double *) + ?png_get_gAMA_fixed@PrivatePng@@YAIPBUpng_struct_def@1@PBUpng_info_def@1@PAH@Z @ 13161 NONAME ; unsigned int PrivatePng::png_get_gAMA_fixed(struct PrivatePng::png_struct_def const *, struct PrivatePng::png_info_def const *, int *) + ?png_get_hIST@PrivatePng@@YAIPBUpng_struct_def@1@PBUpng_info_def@1@PAPAG@Z @ 13162 NONAME ; unsigned int PrivatePng::png_get_hIST(struct PrivatePng::png_struct_def const *, struct PrivatePng::png_info_def const *, unsigned short * *) + ?png_get_header_ver@PrivatePng@@YAPBDPBUpng_struct_def@1@@Z @ 13163 NONAME ; char const * PrivatePng::png_get_header_ver(struct PrivatePng::png_struct_def const *) + ?png_get_header_version@PrivatePng@@YAPBDPBUpng_struct_def@1@@Z @ 13164 NONAME ; char const * PrivatePng::png_get_header_version(struct PrivatePng::png_struct_def const *) + ?png_get_iCCP@PrivatePng@@YAIPBUpng_struct_def@1@PBUpng_info_def@1@PAPADPAHPAPAEPAI@Z @ 13165 NONAME ; unsigned int PrivatePng::png_get_iCCP(struct PrivatePng::png_struct_def const *, struct PrivatePng::png_info_def const *, char * *, int *, unsigned char * *, unsigned int *) + ?png_get_image_height@PrivatePng@@YAIPBUpng_struct_def@1@PBUpng_info_def@1@@Z @ 13166 NONAME ; unsigned int PrivatePng::png_get_image_height(struct PrivatePng::png_struct_def const *, struct PrivatePng::png_info_def const *) + ?png_get_image_width@PrivatePng@@YAIPBUpng_struct_def@1@PBUpng_info_def@1@@Z @ 13167 NONAME ; unsigned int PrivatePng::png_get_image_width(struct PrivatePng::png_struct_def const *, struct PrivatePng::png_info_def const *) + ?png_get_int_32@PrivatePng@@YAHPBE@Z @ 13168 NONAME ; int PrivatePng::png_get_int_32(unsigned char const *) + ?png_get_interlace_type@PrivatePng@@YAEPBUpng_struct_def@1@PBUpng_info_def@1@@Z @ 13169 NONAME ; unsigned char PrivatePng::png_get_interlace_type(struct PrivatePng::png_struct_def const *, struct PrivatePng::png_info_def const *) + ?png_get_io_chunk_name@PrivatePng@@YAPBEPAUpng_struct_def@1@@Z @ 13170 NONAME ; unsigned char const * PrivatePng::png_get_io_chunk_name(struct PrivatePng::png_struct_def *) + ?png_get_io_chunk_type@PrivatePng@@YAIPBUpng_struct_def@1@@Z @ 13171 NONAME ; unsigned int PrivatePng::png_get_io_chunk_type(struct PrivatePng::png_struct_def const *) + ?png_get_io_ptr@PrivatePng@@YAPAXPAUpng_struct_def@1@@Z @ 13172 NONAME ; void * PrivatePng::png_get_io_ptr(struct PrivatePng::png_struct_def *) + ?png_get_io_state@PrivatePng@@YAIPAUpng_struct_def@1@@Z @ 13173 NONAME ; unsigned int PrivatePng::png_get_io_state(struct PrivatePng::png_struct_def *) + ?png_get_libpng_ver@PrivatePng@@YAPBDPBUpng_struct_def@1@@Z @ 13174 NONAME ; char const * PrivatePng::png_get_libpng_ver(struct PrivatePng::png_struct_def const *) + ?png_get_mem_ptr@PrivatePng@@YAPAXPBUpng_struct_def@1@@Z @ 13175 NONAME ; void * PrivatePng::png_get_mem_ptr(struct PrivatePng::png_struct_def const *) + ?png_get_oFFs@PrivatePng@@YAIPBUpng_struct_def@1@PBUpng_info_def@1@PAH22@Z @ 13176 NONAME ; unsigned int PrivatePng::png_get_oFFs(struct PrivatePng::png_struct_def const *, struct PrivatePng::png_info_def const *, int *, int *, int *) + ?png_get_pCAL@PrivatePng@@YAIPBUpng_struct_def@1@PBUpng_info_def@1@PAPADPAH3332PAPAPAD@Z @ 13177 NONAME ; unsigned int PrivatePng::png_get_pCAL(struct PrivatePng::png_struct_def const *, struct PrivatePng::png_info_def const *, char * *, int *, int *, int *, int *, char * *, char * * *) + ?png_get_pHYs@PrivatePng@@YAIPBUpng_struct_def@1@PBUpng_info_def@1@PAI2PAH@Z @ 13178 NONAME ; unsigned int PrivatePng::png_get_pHYs(struct PrivatePng::png_struct_def const *, struct PrivatePng::png_info_def const *, unsigned int *, unsigned int *, int *) + ?png_get_pHYs_dpi@PrivatePng@@YAIPBUpng_struct_def@1@PBUpng_info_def@1@PAI2PAH@Z @ 13179 NONAME ; unsigned int PrivatePng::png_get_pHYs_dpi(struct PrivatePng::png_struct_def const *, struct PrivatePng::png_info_def const *, unsigned int *, unsigned int *, int *) + ?png_get_pixel_aspect_ratio@PrivatePng@@YAMPBUpng_struct_def@1@PBUpng_info_def@1@@Z @ 13180 NONAME ; float PrivatePng::png_get_pixel_aspect_ratio(struct PrivatePng::png_struct_def const *, struct PrivatePng::png_info_def const *) + ?png_get_pixel_aspect_ratio_fixed@PrivatePng@@YAHPBUpng_struct_def@1@PBUpng_info_def@1@@Z @ 13181 NONAME ; int PrivatePng::png_get_pixel_aspect_ratio_fixed(struct PrivatePng::png_struct_def const *, struct PrivatePng::png_info_def const *) + ?png_get_pixels_per_inch@PrivatePng@@YAIPBUpng_struct_def@1@PBUpng_info_def@1@@Z @ 13182 NONAME ; unsigned int PrivatePng::png_get_pixels_per_inch(struct PrivatePng::png_struct_def const *, struct PrivatePng::png_info_def const *) + ?png_get_pixels_per_meter@PrivatePng@@YAIPBUpng_struct_def@1@PBUpng_info_def@1@@Z @ 13183 NONAME ; unsigned int PrivatePng::png_get_pixels_per_meter(struct PrivatePng::png_struct_def const *, struct PrivatePng::png_info_def const *) + ?png_get_progressive_ptr@PrivatePng@@YAPAXPBUpng_struct_def@1@@Z @ 13184 NONAME ; void * PrivatePng::png_get_progressive_ptr(struct PrivatePng::png_struct_def const *) + ?png_get_rgb_to_gray_status@PrivatePng@@YAEPBUpng_struct_def@1@@Z @ 13185 NONAME ; unsigned char PrivatePng::png_get_rgb_to_gray_status(struct PrivatePng::png_struct_def const *) + ?png_get_rowbytes@PrivatePng@@YAIPBUpng_struct_def@1@PBUpng_info_def@1@@Z @ 13186 NONAME ; unsigned int PrivatePng::png_get_rowbytes(struct PrivatePng::png_struct_def const *, struct PrivatePng::png_info_def const *) + ?png_get_rows@PrivatePng@@YAPAPAEPBUpng_struct_def@1@PBUpng_info_def@1@@Z @ 13187 NONAME ; unsigned char * * PrivatePng::png_get_rows(struct PrivatePng::png_struct_def const *, struct PrivatePng::png_info_def const *) + ?png_get_sBIT@PrivatePng@@YAIPBUpng_struct_def@1@PAUpng_info_def@1@PAPAUpng_color_8_struct@1@@Z @ 13188 NONAME ; unsigned int PrivatePng::png_get_sBIT(struct PrivatePng::png_struct_def const *, struct PrivatePng::png_info_def *, struct PrivatePng::png_color_8_struct * *) + ?png_get_sCAL@PrivatePng@@YAIPBUpng_struct_def@1@PBUpng_info_def@1@PAHPAN3@Z @ 13189 NONAME ; unsigned int PrivatePng::png_get_sCAL(struct PrivatePng::png_struct_def const *, struct PrivatePng::png_info_def const *, int *, double *, double *) + ?png_get_sCAL_fixed@PrivatePng@@YAIPAUpng_struct_def@1@PBUpng_info_def@1@PAH22@Z @ 13190 NONAME ; unsigned int PrivatePng::png_get_sCAL_fixed(struct PrivatePng::png_struct_def *, struct PrivatePng::png_info_def const *, int *, int *, int *) + ?png_get_sCAL_s@PrivatePng@@YAIPBUpng_struct_def@1@PBUpng_info_def@1@PAHPAPAD3@Z @ 13191 NONAME ; unsigned int PrivatePng::png_get_sCAL_s(struct PrivatePng::png_struct_def const *, struct PrivatePng::png_info_def const *, int *, char * *, char * *) + ?png_get_sPLT@PrivatePng@@YAIPBUpng_struct_def@1@PBUpng_info_def@1@PAPAUpng_sPLT_struct@1@@Z @ 13192 NONAME ; unsigned int PrivatePng::png_get_sPLT(struct PrivatePng::png_struct_def const *, struct PrivatePng::png_info_def const *, struct PrivatePng::png_sPLT_struct * *) + ?png_get_sRGB@PrivatePng@@YAIPBUpng_struct_def@1@PBUpng_info_def@1@PAH@Z @ 13193 NONAME ; unsigned int PrivatePng::png_get_sRGB(struct PrivatePng::png_struct_def const *, struct PrivatePng::png_info_def const *, int *) + ?png_get_signature@PrivatePng@@YAPBEPBUpng_struct_def@1@PAUpng_info_def@1@@Z @ 13194 NONAME ; unsigned char const * PrivatePng::png_get_signature(struct PrivatePng::png_struct_def const *, struct PrivatePng::png_info_def *) + ?png_get_tIME@PrivatePng@@YAIPBUpng_struct_def@1@PAUpng_info_def@1@PAPAUpng_time_struct@1@@Z @ 13195 NONAME ; unsigned int PrivatePng::png_get_tIME(struct PrivatePng::png_struct_def const *, struct PrivatePng::png_info_def *, struct PrivatePng::png_time_struct * *) + ?png_get_tRNS@PrivatePng@@YAIPBUpng_struct_def@1@PAUpng_info_def@1@PAPAEPAHPAPAUpng_color_16_struct@1@@Z @ 13196 NONAME ; unsigned int PrivatePng::png_get_tRNS(struct PrivatePng::png_struct_def const *, struct PrivatePng::png_info_def *, unsigned char * *, int *, struct PrivatePng::png_color_16_struct * *) + ?png_get_text@PrivatePng@@YAIPBUpng_struct_def@1@PBUpng_info_def@1@PAPAUpng_text_struct@1@PAH@Z @ 13197 NONAME ; unsigned int PrivatePng::png_get_text(struct PrivatePng::png_struct_def const *, struct PrivatePng::png_info_def const *, struct PrivatePng::png_text_struct * *, int *) + ?png_get_uint_16@PrivatePng@@YAGPBE@Z @ 13198 NONAME ; unsigned short PrivatePng::png_get_uint_16(unsigned char const *) + ?png_get_uint_31@PrivatePng@@YAIPAUpng_struct_def@1@PBE@Z @ 13199 NONAME ; unsigned int PrivatePng::png_get_uint_31(struct PrivatePng::png_struct_def *, unsigned char const *) + ?png_get_uint_32@PrivatePng@@YAIPBE@Z @ 13200 NONAME ; unsigned int PrivatePng::png_get_uint_32(unsigned char const *) + ?png_get_unknown_chunks@PrivatePng@@YAHPBUpng_struct_def@1@PBUpng_info_def@1@PAPAUpng_unknown_chunk_t@1@@Z @ 13201 NONAME ; int PrivatePng::png_get_unknown_chunks(struct PrivatePng::png_struct_def const *, struct PrivatePng::png_info_def const *, struct PrivatePng::png_unknown_chunk_t * *) + ?png_get_user_chunk_ptr@PrivatePng@@YAPAXPBUpng_struct_def@1@@Z @ 13202 NONAME ; void * PrivatePng::png_get_user_chunk_ptr(struct PrivatePng::png_struct_def const *) + ?png_get_user_height_max@PrivatePng@@YAIPBUpng_struct_def@1@@Z @ 13203 NONAME ; unsigned int PrivatePng::png_get_user_height_max(struct PrivatePng::png_struct_def const *) + ?png_get_user_transform_ptr@PrivatePng@@YAPAXPBUpng_struct_def@1@@Z @ 13204 NONAME ; void * PrivatePng::png_get_user_transform_ptr(struct PrivatePng::png_struct_def const *) + ?png_get_user_width_max@PrivatePng@@YAIPBUpng_struct_def@1@@Z @ 13205 NONAME ; unsigned int PrivatePng::png_get_user_width_max(struct PrivatePng::png_struct_def const *) + ?png_get_valid@PrivatePng@@YAIPBUpng_struct_def@1@PBUpng_info_def@1@I@Z @ 13206 NONAME ; unsigned int PrivatePng::png_get_valid(struct PrivatePng::png_struct_def const *, struct PrivatePng::png_info_def const *, unsigned int) + ?png_get_x_offset_inches@PrivatePng@@YAMPBUpng_struct_def@1@PBUpng_info_def@1@@Z @ 13207 NONAME ; float PrivatePng::png_get_x_offset_inches(struct PrivatePng::png_struct_def const *, struct PrivatePng::png_info_def const *) + ?png_get_x_offset_inches_fixed@PrivatePng@@YAHPAUpng_struct_def@1@PBUpng_info_def@1@@Z @ 13208 NONAME ; int PrivatePng::png_get_x_offset_inches_fixed(struct PrivatePng::png_struct_def *, struct PrivatePng::png_info_def const *) + ?png_get_x_offset_microns@PrivatePng@@YAHPBUpng_struct_def@1@PBUpng_info_def@1@@Z @ 13209 NONAME ; int PrivatePng::png_get_x_offset_microns(struct PrivatePng::png_struct_def const *, struct PrivatePng::png_info_def const *) + ?png_get_x_offset_pixels@PrivatePng@@YAHPBUpng_struct_def@1@PBUpng_info_def@1@@Z @ 13210 NONAME ; int PrivatePng::png_get_x_offset_pixels(struct PrivatePng::png_struct_def const *, struct PrivatePng::png_info_def const *) + ?png_get_x_pixels_per_inch@PrivatePng@@YAIPBUpng_struct_def@1@PBUpng_info_def@1@@Z @ 13211 NONAME ; unsigned int PrivatePng::png_get_x_pixels_per_inch(struct PrivatePng::png_struct_def const *, struct PrivatePng::png_info_def const *) + ?png_get_x_pixels_per_meter@PrivatePng@@YAIPBUpng_struct_def@1@PBUpng_info_def@1@@Z @ 13212 NONAME ; unsigned int PrivatePng::png_get_x_pixels_per_meter(struct PrivatePng::png_struct_def const *, struct PrivatePng::png_info_def const *) + ?png_get_y_offset_inches@PrivatePng@@YAMPBUpng_struct_def@1@PBUpng_info_def@1@@Z @ 13213 NONAME ; float PrivatePng::png_get_y_offset_inches(struct PrivatePng::png_struct_def const *, struct PrivatePng::png_info_def const *) + ?png_get_y_offset_inches_fixed@PrivatePng@@YAHPAUpng_struct_def@1@PBUpng_info_def@1@@Z @ 13214 NONAME ; int PrivatePng::png_get_y_offset_inches_fixed(struct PrivatePng::png_struct_def *, struct PrivatePng::png_info_def const *) + ?png_get_y_offset_microns@PrivatePng@@YAHPBUpng_struct_def@1@PBUpng_info_def@1@@Z @ 13215 NONAME ; int PrivatePng::png_get_y_offset_microns(struct PrivatePng::png_struct_def const *, struct PrivatePng::png_info_def const *) + ?png_get_y_offset_pixels@PrivatePng@@YAHPBUpng_struct_def@1@PBUpng_info_def@1@@Z @ 13216 NONAME ; int PrivatePng::png_get_y_offset_pixels(struct PrivatePng::png_struct_def const *, struct PrivatePng::png_info_def const *) + ?png_get_y_pixels_per_inch@PrivatePng@@YAIPBUpng_struct_def@1@PBUpng_info_def@1@@Z @ 13217 NONAME ; unsigned int PrivatePng::png_get_y_pixels_per_inch(struct PrivatePng::png_struct_def const *, struct PrivatePng::png_info_def const *) + ?png_get_y_pixels_per_meter@PrivatePng@@YAIPBUpng_struct_def@1@PBUpng_info_def@1@@Z @ 13218 NONAME ; unsigned int PrivatePng::png_get_y_pixels_per_meter(struct PrivatePng::png_struct_def const *, struct PrivatePng::png_info_def const *) + ?png_handle_as_unknown@PrivatePng@@YAHPAUpng_struct_def@1@PBE@Z @ 13219 NONAME ; int PrivatePng::png_handle_as_unknown(struct PrivatePng::png_struct_def *, unsigned char const *) + ?png_info_init_3@PrivatePng@@YAXPAPAUpng_info_def@1@I@Z @ 13220 NONAME ; void PrivatePng::png_info_init_3(struct PrivatePng::png_info_def * *, unsigned int) + ?png_init_io@PrivatePng@@YAXPAUpng_struct_def@1@PAU__sFILE@@@Z @ 13221 NONAME ; void PrivatePng::png_init_io(struct PrivatePng::png_struct_def *, struct __sFILE *) + ?png_longjmp@PrivatePng@@YAXPAUpng_struct_def@1@H@Z @ 13222 NONAME ; void PrivatePng::png_longjmp(struct PrivatePng::png_struct_def *, int) + ?png_malloc@PrivatePng@@YAPAXPAUpng_struct_def@1@I@Z @ 13223 NONAME ; void * PrivatePng::png_malloc(struct PrivatePng::png_struct_def *, unsigned int) + ?png_malloc_default@PrivatePng@@YAPAXPAUpng_struct_def@1@I@Z @ 13224 NONAME ; void * PrivatePng::png_malloc_default(struct PrivatePng::png_struct_def *, unsigned int) + ?png_malloc_warn@PrivatePng@@YAPAXPAUpng_struct_def@1@I@Z @ 13225 NONAME ; void * PrivatePng::png_malloc_warn(struct PrivatePng::png_struct_def *, unsigned int) + ?png_permit_mng_features@PrivatePng@@YAIPAUpng_struct_def@1@I@Z @ 13226 NONAME ; unsigned int PrivatePng::png_permit_mng_features(struct PrivatePng::png_struct_def *, unsigned int) + ?png_process_data@PrivatePng@@YAXPAUpng_struct_def@1@PAUpng_info_def@1@PAEI@Z @ 13227 NONAME ; void PrivatePng::png_process_data(struct PrivatePng::png_struct_def *, struct PrivatePng::png_info_def *, unsigned char *, unsigned int) + ?png_process_data_pause@PrivatePng@@YAIPAUpng_struct_def@1@H@Z @ 13228 NONAME ; unsigned int PrivatePng::png_process_data_pause(struct PrivatePng::png_struct_def *, int) + ?png_process_data_skip@PrivatePng@@YAIPAUpng_struct_def@1@@Z @ 13229 NONAME ; unsigned int PrivatePng::png_process_data_skip(struct PrivatePng::png_struct_def *) + ?png_progressive_combine_row@PrivatePng@@YAXPAUpng_struct_def@1@PAEPBE@Z @ 13230 NONAME ; void PrivatePng::png_progressive_combine_row(struct PrivatePng::png_struct_def *, unsigned char *, unsigned char const *) + ?png_read_end@PrivatePng@@YAXPAUpng_struct_def@1@PAUpng_info_def@1@@Z @ 13231 NONAME ; void PrivatePng::png_read_end(struct PrivatePng::png_struct_def *, struct PrivatePng::png_info_def *) + ?png_read_image@PrivatePng@@YAXPAUpng_struct_def@1@PAPAE@Z @ 13232 NONAME ; void PrivatePng::png_read_image(struct PrivatePng::png_struct_def *, unsigned char * *) + ?png_read_info@PrivatePng@@YAXPAUpng_struct_def@1@PAUpng_info_def@1@@Z @ 13233 NONAME ; void PrivatePng::png_read_info(struct PrivatePng::png_struct_def *, struct PrivatePng::png_info_def *) + ?png_read_png@PrivatePng@@YAXPAUpng_struct_def@1@PAUpng_info_def@1@HPAX@Z @ 13234 NONAME ; void PrivatePng::png_read_png(struct PrivatePng::png_struct_def *, struct PrivatePng::png_info_def *, int, void *) + ?png_read_row@PrivatePng@@YAXPAUpng_struct_def@1@PAE1@Z @ 13235 NONAME ; void PrivatePng::png_read_row(struct PrivatePng::png_struct_def *, unsigned char *, unsigned char *) + ?png_read_rows@PrivatePng@@YAXPAUpng_struct_def@1@PAPAE1I@Z @ 13236 NONAME ; void PrivatePng::png_read_rows(struct PrivatePng::png_struct_def *, unsigned char * *, unsigned char * *, unsigned int) + ?png_read_update_info@PrivatePng@@YAXPAUpng_struct_def@1@PAUpng_info_def@1@@Z @ 13237 NONAME ; void PrivatePng::png_read_update_info(struct PrivatePng::png_struct_def *, struct PrivatePng::png_info_def *) + ?png_reset_zstream@PrivatePng@@YAHPAUpng_struct_def@1@@Z @ 13238 NONAME ; int PrivatePng::png_reset_zstream(struct PrivatePng::png_struct_def *) + ?png_save_int_32@PrivatePng@@YAXPAEH@Z @ 13239 NONAME ; void PrivatePng::png_save_int_32(unsigned char *, int) + ?png_save_uint_16@PrivatePng@@YAXPAEI@Z @ 13240 NONAME ; void PrivatePng::png_save_uint_16(unsigned char *, unsigned int) + ?png_save_uint_32@PrivatePng@@YAXPAEI@Z @ 13241 NONAME ; void PrivatePng::png_save_uint_32(unsigned char *, unsigned int) + ?png_set_IHDR@PrivatePng@@YAXPAUpng_struct_def@1@PAUpng_info_def@1@IIHHHHH@Z @ 13242 NONAME ; void PrivatePng::png_set_IHDR(struct PrivatePng::png_struct_def *, struct PrivatePng::png_info_def *, unsigned int, unsigned int, int, int, int, int, int) + ?png_set_PLTE@PrivatePng@@YAXPAUpng_struct_def@1@PAUpng_info_def@1@PBUpng_color_struct@1@H@Z @ 13243 NONAME ; void PrivatePng::png_set_PLTE(struct PrivatePng::png_struct_def *, struct PrivatePng::png_info_def *, struct PrivatePng::png_color_struct const *, int) + ?png_set_add_alpha@PrivatePng@@YAXPAUpng_struct_def@1@IH@Z @ 13244 NONAME ; void PrivatePng::png_set_add_alpha(struct PrivatePng::png_struct_def *, unsigned int, int) + ?png_set_alpha_mode@PrivatePng@@YAXPAUpng_struct_def@1@HN@Z @ 13245 NONAME ; void PrivatePng::png_set_alpha_mode(struct PrivatePng::png_struct_def *, int, double) + ?png_set_alpha_mode_fixed@PrivatePng@@YAXPAUpng_struct_def@1@HH@Z @ 13246 NONAME ; void PrivatePng::png_set_alpha_mode_fixed(struct PrivatePng::png_struct_def *, int, int) + ?png_set_bKGD@PrivatePng@@YAXPAUpng_struct_def@1@PAUpng_info_def@1@PBUpng_color_16_struct@1@@Z @ 13247 NONAME ; void PrivatePng::png_set_bKGD(struct PrivatePng::png_struct_def *, struct PrivatePng::png_info_def *, struct PrivatePng::png_color_16_struct const *) + ?png_set_background@PrivatePng@@YAXPAUpng_struct_def@1@PBUpng_color_16_struct@1@HHN@Z @ 13248 NONAME ; void PrivatePng::png_set_background(struct PrivatePng::png_struct_def *, struct PrivatePng::png_color_16_struct const *, int, int, double) + ?png_set_background_fixed@PrivatePng@@YAXPAUpng_struct_def@1@PBUpng_color_16_struct@1@HHH@Z @ 13249 NONAME ; void PrivatePng::png_set_background_fixed(struct PrivatePng::png_struct_def *, struct PrivatePng::png_color_16_struct const *, int, int, int) + ?png_set_benign_errors@PrivatePng@@YAXPAUpng_struct_def@1@H@Z @ 13250 NONAME ; void PrivatePng::png_set_benign_errors(struct PrivatePng::png_struct_def *, int) + ?png_set_bgr@PrivatePng@@YAXPAUpng_struct_def@1@@Z @ 13251 NONAME ; void PrivatePng::png_set_bgr(struct PrivatePng::png_struct_def *) + ?png_set_cHRM@PrivatePng@@YAXPAUpng_struct_def@1@PAUpng_info_def@1@NNNNNNNN@Z @ 13252 NONAME ; void PrivatePng::png_set_cHRM(struct PrivatePng::png_struct_def *, struct PrivatePng::png_info_def *, double, double, double, double, double, double, double, double) + ?png_set_cHRM_fixed@PrivatePng@@YAXPAUpng_struct_def@1@PAUpng_info_def@1@HHHHHHHH@Z @ 13253 NONAME ; void PrivatePng::png_set_cHRM_fixed(struct PrivatePng::png_struct_def *, struct PrivatePng::png_info_def *, int, int, int, int, int, int, int, int) + ?png_set_chunk_cache_max@PrivatePng@@YAXPAUpng_struct_def@1@I@Z @ 13254 NONAME ; void PrivatePng::png_set_chunk_cache_max(struct PrivatePng::png_struct_def *, unsigned int) + ?png_set_chunk_malloc_max@PrivatePng@@YAXPAUpng_struct_def@1@I@Z @ 13255 NONAME ; void PrivatePng::png_set_chunk_malloc_max(struct PrivatePng::png_struct_def *, unsigned int) + ?png_set_compression_buffer_size@PrivatePng@@YAXPAUpng_struct_def@1@I@Z @ 13256 NONAME ; void PrivatePng::png_set_compression_buffer_size(struct PrivatePng::png_struct_def *, unsigned int) + ?png_set_compression_level@PrivatePng@@YAXPAUpng_struct_def@1@H@Z @ 13257 NONAME ; void PrivatePng::png_set_compression_level(struct PrivatePng::png_struct_def *, int) + ?png_set_compression_mem_level@PrivatePng@@YAXPAUpng_struct_def@1@H@Z @ 13258 NONAME ; void PrivatePng::png_set_compression_mem_level(struct PrivatePng::png_struct_def *, int) + ?png_set_compression_method@PrivatePng@@YAXPAUpng_struct_def@1@H@Z @ 13259 NONAME ; void PrivatePng::png_set_compression_method(struct PrivatePng::png_struct_def *, int) + ?png_set_compression_strategy@PrivatePng@@YAXPAUpng_struct_def@1@H@Z @ 13260 NONAME ; void PrivatePng::png_set_compression_strategy(struct PrivatePng::png_struct_def *, int) + ?png_set_compression_window_bits@PrivatePng@@YAXPAUpng_struct_def@1@H@Z @ 13261 NONAME ; void PrivatePng::png_set_compression_window_bits(struct PrivatePng::png_struct_def *, int) + ?png_set_crc_action@PrivatePng@@YAXPAUpng_struct_def@1@HH@Z @ 13262 NONAME ; void PrivatePng::png_set_crc_action(struct PrivatePng::png_struct_def *, int, int) + ?png_set_error_fn@PrivatePng@@YAXPAUpng_struct_def@1@PAXP6AX0PBD@ZP6AX02@Z@Z @ 13263 NONAME ; void PrivatePng::png_set_error_fn(struct PrivatePng::png_struct_def *, void *, void (*)(struct PrivatePng::png_struct_def *, char const *), void (*)(struct PrivatePng::png_struct_def *, char const *)) + ?png_set_expand@PrivatePng@@YAXPAUpng_struct_def@1@@Z @ 13264 NONAME ; void PrivatePng::png_set_expand(struct PrivatePng::png_struct_def *) + ?png_set_expand_16@PrivatePng@@YAXPAUpng_struct_def@1@@Z @ 13265 NONAME ; void PrivatePng::png_set_expand_16(struct PrivatePng::png_struct_def *) + ?png_set_expand_gray_1_2_4_to_8@PrivatePng@@YAXPAUpng_struct_def@1@@Z @ 13266 NONAME ; void PrivatePng::png_set_expand_gray_1_2_4_to_8(struct PrivatePng::png_struct_def *) + ?png_set_filler@PrivatePng@@YAXPAUpng_struct_def@1@IH@Z @ 13267 NONAME ; void PrivatePng::png_set_filler(struct PrivatePng::png_struct_def *, unsigned int, int) + ?png_set_filter@PrivatePng@@YAXPAUpng_struct_def@1@HH@Z @ 13268 NONAME ; void PrivatePng::png_set_filter(struct PrivatePng::png_struct_def *, int, int) + ?png_set_filter_heuristics@PrivatePng@@YAXPAUpng_struct_def@1@HHPBN1@Z @ 13269 NONAME ; void PrivatePng::png_set_filter_heuristics(struct PrivatePng::png_struct_def *, int, int, double const *, double const *) + ?png_set_filter_heuristics_fixed@PrivatePng@@YAXPAUpng_struct_def@1@HHPBH1@Z @ 13270 NONAME ; void PrivatePng::png_set_filter_heuristics_fixed(struct PrivatePng::png_struct_def *, int, int, int const *, int const *) + ?png_set_flush@PrivatePng@@YAXPAUpng_struct_def@1@H@Z @ 13271 NONAME ; void PrivatePng::png_set_flush(struct PrivatePng::png_struct_def *, int) + ?png_set_gAMA@PrivatePng@@YAXPAUpng_struct_def@1@PAUpng_info_def@1@N@Z @ 13272 NONAME ; void PrivatePng::png_set_gAMA(struct PrivatePng::png_struct_def *, struct PrivatePng::png_info_def *, double) + ?png_set_gAMA_fixed@PrivatePng@@YAXPAUpng_struct_def@1@PAUpng_info_def@1@H@Z @ 13273 NONAME ; void PrivatePng::png_set_gAMA_fixed(struct PrivatePng::png_struct_def *, struct PrivatePng::png_info_def *, int) + ?png_set_gamma@PrivatePng@@YAXPAUpng_struct_def@1@NN@Z @ 13274 NONAME ; void PrivatePng::png_set_gamma(struct PrivatePng::png_struct_def *, double, double) + ?png_set_gamma_fixed@PrivatePng@@YAXPAUpng_struct_def@1@HH@Z @ 13275 NONAME ; void PrivatePng::png_set_gamma_fixed(struct PrivatePng::png_struct_def *, int, int) + ?png_set_gray_to_rgb@PrivatePng@@YAXPAUpng_struct_def@1@@Z @ 13276 NONAME ; void PrivatePng::png_set_gray_to_rgb(struct PrivatePng::png_struct_def *) + ?png_set_hIST@PrivatePng@@YAXPAUpng_struct_def@1@PAUpng_info_def@1@PBG@Z @ 13277 NONAME ; void PrivatePng::png_set_hIST(struct PrivatePng::png_struct_def *, struct PrivatePng::png_info_def *, unsigned short const *) + ?png_set_iCCP@PrivatePng@@YAXPAUpng_struct_def@1@PAUpng_info_def@1@PBDHPBEI@Z @ 13278 NONAME ; void PrivatePng::png_set_iCCP(struct PrivatePng::png_struct_def *, struct PrivatePng::png_info_def *, char const *, int, unsigned char const *, unsigned int) + ?png_set_interlace_handling@PrivatePng@@YAHPAUpng_struct_def@1@@Z @ 13279 NONAME ; int PrivatePng::png_set_interlace_handling(struct PrivatePng::png_struct_def *) + ?png_set_invalid@PrivatePng@@YAXPAUpng_struct_def@1@PAUpng_info_def@1@H@Z @ 13280 NONAME ; void PrivatePng::png_set_invalid(struct PrivatePng::png_struct_def *, struct PrivatePng::png_info_def *, int) + ?png_set_invert_alpha@PrivatePng@@YAXPAUpng_struct_def@1@@Z @ 13281 NONAME ; void PrivatePng::png_set_invert_alpha(struct PrivatePng::png_struct_def *) + ?png_set_invert_mono@PrivatePng@@YAXPAUpng_struct_def@1@@Z @ 13282 NONAME ; void PrivatePng::png_set_invert_mono(struct PrivatePng::png_struct_def *) + ?png_set_keep_unknown_chunks@PrivatePng@@YAXPAUpng_struct_def@1@HPBEH@Z @ 13283 NONAME ; void PrivatePng::png_set_keep_unknown_chunks(struct PrivatePng::png_struct_def *, int, unsigned char const *, int) + ?png_set_longjmp_fn@PrivatePng@@YAPAY0BA@KPAUpng_struct_def@1@P6AXQAKH@ZI@Z @ 13284 NONAME ; unsigned long [16] * PrivatePng::png_set_longjmp_fn(struct PrivatePng::png_struct_def *, void (*)(unsigned long * const, int), unsigned int) + ?png_set_mem_fn@PrivatePng@@YAXPAUpng_struct_def@1@PAXP6APAX0I@ZP6AX01@Z@Z @ 13285 NONAME ; void PrivatePng::png_set_mem_fn(struct PrivatePng::png_struct_def *, void *, void * (*)(struct PrivatePng::png_struct_def *, unsigned int), void (*)(struct PrivatePng::png_struct_def *, void *)) + ?png_set_oFFs@PrivatePng@@YAXPAUpng_struct_def@1@PAUpng_info_def@1@HHH@Z @ 13286 NONAME ; void PrivatePng::png_set_oFFs(struct PrivatePng::png_struct_def *, struct PrivatePng::png_info_def *, int, int, int) + ?png_set_pCAL@PrivatePng@@YAXPAUpng_struct_def@1@PAUpng_info_def@1@PBDHHHH2PAPAD@Z @ 13287 NONAME ; void PrivatePng::png_set_pCAL(struct PrivatePng::png_struct_def *, struct PrivatePng::png_info_def *, char const *, int, int, int, int, char const *, char * *) + ?png_set_pHYs@PrivatePng@@YAXPAUpng_struct_def@1@PAUpng_info_def@1@IIH@Z @ 13288 NONAME ; void PrivatePng::png_set_pHYs(struct PrivatePng::png_struct_def *, struct PrivatePng::png_info_def *, unsigned int, unsigned int, int) + ?png_set_packing@PrivatePng@@YAXPAUpng_struct_def@1@@Z @ 13289 NONAME ; void PrivatePng::png_set_packing(struct PrivatePng::png_struct_def *) + ?png_set_packswap@PrivatePng@@YAXPAUpng_struct_def@1@@Z @ 13290 NONAME ; void PrivatePng::png_set_packswap(struct PrivatePng::png_struct_def *) + ?png_set_palette_to_rgb@PrivatePng@@YAXPAUpng_struct_def@1@@Z @ 13291 NONAME ; void PrivatePng::png_set_palette_to_rgb(struct PrivatePng::png_struct_def *) + ?png_set_progressive_read_fn@PrivatePng@@YAXPAUpng_struct_def@1@PAXP6AX0PAUpng_info_def@1@@ZP6AX0PAEIH@ZP6AX02@Z@Z @ 13292 NONAME ; void PrivatePng::png_set_progressive_read_fn(struct PrivatePng::png_struct_def *, void *, void (*)(struct PrivatePng::png_struct_def *, struct PrivatePng::png_info_def *), void (*)(struct PrivatePng::png_struct_def *, unsigned char *, unsigned int, int), void (*)(struct PrivatePng::png_struct_def *, struct PrivatePng::png_info_def *)) + ?png_set_quantize@PrivatePng@@YAXPAUpng_struct_def@1@PAUpng_color_struct@1@HHPBGH@Z @ 13293 NONAME ; void PrivatePng::png_set_quantize(struct PrivatePng::png_struct_def *, struct PrivatePng::png_color_struct *, int, int, unsigned short const *, int) + ?png_set_read_fn@PrivatePng@@YAXPAUpng_struct_def@1@PAXP6AX0PAEI@Z@Z @ 13294 NONAME ; void PrivatePng::png_set_read_fn(struct PrivatePng::png_struct_def *, void *, void (*)(struct PrivatePng::png_struct_def *, unsigned char *, unsigned int)) + ?png_set_read_status_fn@PrivatePng@@YAXPAUpng_struct_def@1@P6AX0IH@Z@Z @ 13295 NONAME ; void PrivatePng::png_set_read_status_fn(struct PrivatePng::png_struct_def *, void (*)(struct PrivatePng::png_struct_def *, unsigned int, int)) + ?png_set_read_user_chunk_fn@PrivatePng@@YAXPAUpng_struct_def@1@PAXP6AH0PAUpng_unknown_chunk_t@1@@Z@Z @ 13296 NONAME ; void PrivatePng::png_set_read_user_chunk_fn(struct PrivatePng::png_struct_def *, void *, int (*)(struct PrivatePng::png_struct_def *, struct PrivatePng::png_unknown_chunk_t *)) + ?png_set_read_user_transform_fn@PrivatePng@@YAXPAUpng_struct_def@1@P6AX0PAUpng_row_info_struct@1@PAE@Z@Z @ 13297 NONAME ; void PrivatePng::png_set_read_user_transform_fn(struct PrivatePng::png_struct_def *, void (*)(struct PrivatePng::png_struct_def *, struct PrivatePng::png_row_info_struct *, unsigned char *)) + ?png_set_rgb_to_gray@PrivatePng@@YAXPAUpng_struct_def@1@HNN@Z @ 13298 NONAME ; void PrivatePng::png_set_rgb_to_gray(struct PrivatePng::png_struct_def *, int, double, double) + ?png_set_rgb_to_gray_fixed@PrivatePng@@YAXPAUpng_struct_def@1@HHH@Z @ 13299 NONAME ; void PrivatePng::png_set_rgb_to_gray_fixed(struct PrivatePng::png_struct_def *, int, int, int) + ?png_set_rows@PrivatePng@@YAXPAUpng_struct_def@1@PAUpng_info_def@1@PAPAE@Z @ 13300 NONAME ; void PrivatePng::png_set_rows(struct PrivatePng::png_struct_def *, struct PrivatePng::png_info_def *, unsigned char * *) + ?png_set_sBIT@PrivatePng@@YAXPAUpng_struct_def@1@PAUpng_info_def@1@PBUpng_color_8_struct@1@@Z @ 13301 NONAME ; void PrivatePng::png_set_sBIT(struct PrivatePng::png_struct_def *, struct PrivatePng::png_info_def *, struct PrivatePng::png_color_8_struct const *) + ?png_set_sCAL@PrivatePng@@YAXPAUpng_struct_def@1@PAUpng_info_def@1@HNN@Z @ 13302 NONAME ; void PrivatePng::png_set_sCAL(struct PrivatePng::png_struct_def *, struct PrivatePng::png_info_def *, int, double, double) + ?png_set_sCAL_fixed@PrivatePng@@YAXPAUpng_struct_def@1@PAUpng_info_def@1@HHH@Z @ 13303 NONAME ; void PrivatePng::png_set_sCAL_fixed(struct PrivatePng::png_struct_def *, struct PrivatePng::png_info_def *, int, int, int) + ?png_set_sCAL_s@PrivatePng@@YAXPAUpng_struct_def@1@PAUpng_info_def@1@HPBD2@Z @ 13304 NONAME ; void PrivatePng::png_set_sCAL_s(struct PrivatePng::png_struct_def *, struct PrivatePng::png_info_def *, int, char const *, char const *) + ?png_set_sPLT@PrivatePng@@YAXPAUpng_struct_def@1@PAUpng_info_def@1@PBUpng_sPLT_struct@1@H@Z @ 13305 NONAME ; void PrivatePng::png_set_sPLT(struct PrivatePng::png_struct_def *, struct PrivatePng::png_info_def *, struct PrivatePng::png_sPLT_struct const *, int) + ?png_set_sRGB@PrivatePng@@YAXPAUpng_struct_def@1@PAUpng_info_def@1@H@Z @ 13306 NONAME ; void PrivatePng::png_set_sRGB(struct PrivatePng::png_struct_def *, struct PrivatePng::png_info_def *, int) + ?png_set_sRGB_gAMA_and_cHRM@PrivatePng@@YAXPAUpng_struct_def@1@PAUpng_info_def@1@H@Z @ 13307 NONAME ; void PrivatePng::png_set_sRGB_gAMA_and_cHRM(struct PrivatePng::png_struct_def *, struct PrivatePng::png_info_def *, int) + ?png_set_scale_16@PrivatePng@@YAXPAUpng_struct_def@1@@Z @ 13308 NONAME ; void PrivatePng::png_set_scale_16(struct PrivatePng::png_struct_def *) + ?png_set_shift@PrivatePng@@YAXPAUpng_struct_def@1@PBUpng_color_8_struct@1@@Z @ 13309 NONAME ; void PrivatePng::png_set_shift(struct PrivatePng::png_struct_def *, struct PrivatePng::png_color_8_struct const *) + ?png_set_sig_bytes@PrivatePng@@YAXPAUpng_struct_def@1@H@Z @ 13310 NONAME ; void PrivatePng::png_set_sig_bytes(struct PrivatePng::png_struct_def *, int) + ?png_set_strip_16@PrivatePng@@YAXPAUpng_struct_def@1@@Z @ 13311 NONAME ; void PrivatePng::png_set_strip_16(struct PrivatePng::png_struct_def *) + ?png_set_strip_alpha@PrivatePng@@YAXPAUpng_struct_def@1@@Z @ 13312 NONAME ; void PrivatePng::png_set_strip_alpha(struct PrivatePng::png_struct_def *) + ?png_set_swap@PrivatePng@@YAXPAUpng_struct_def@1@@Z @ 13313 NONAME ; void PrivatePng::png_set_swap(struct PrivatePng::png_struct_def *) + ?png_set_swap_alpha@PrivatePng@@YAXPAUpng_struct_def@1@@Z @ 13314 NONAME ; void PrivatePng::png_set_swap_alpha(struct PrivatePng::png_struct_def *) + ?png_set_tIME@PrivatePng@@YAXPAUpng_struct_def@1@PAUpng_info_def@1@PBUpng_time_struct@1@@Z @ 13315 NONAME ; void PrivatePng::png_set_tIME(struct PrivatePng::png_struct_def *, struct PrivatePng::png_info_def *, struct PrivatePng::png_time_struct const *) + ?png_set_tRNS@PrivatePng@@YAXPAUpng_struct_def@1@PAUpng_info_def@1@PBEHPBUpng_color_16_struct@1@@Z @ 13316 NONAME ; void PrivatePng::png_set_tRNS(struct PrivatePng::png_struct_def *, struct PrivatePng::png_info_def *, unsigned char const *, int, struct PrivatePng::png_color_16_struct const *) + ?png_set_tRNS_to_alpha@PrivatePng@@YAXPAUpng_struct_def@1@@Z @ 13317 NONAME ; void PrivatePng::png_set_tRNS_to_alpha(struct PrivatePng::png_struct_def *) + ?png_set_text@PrivatePng@@YAXPAUpng_struct_def@1@PAUpng_info_def@1@PBUpng_text_struct@1@H@Z @ 13318 NONAME ; void PrivatePng::png_set_text(struct PrivatePng::png_struct_def *, struct PrivatePng::png_info_def *, struct PrivatePng::png_text_struct const *, int) + ?png_set_text_compression_level@PrivatePng@@YAXPAUpng_struct_def@1@H@Z @ 13319 NONAME ; void PrivatePng::png_set_text_compression_level(struct PrivatePng::png_struct_def *, int) + ?png_set_text_compression_mem_level@PrivatePng@@YAXPAUpng_struct_def@1@H@Z @ 13320 NONAME ; void PrivatePng::png_set_text_compression_mem_level(struct PrivatePng::png_struct_def *, int) + ?png_set_text_compression_method@PrivatePng@@YAXPAUpng_struct_def@1@H@Z @ 13321 NONAME ; void PrivatePng::png_set_text_compression_method(struct PrivatePng::png_struct_def *, int) + ?png_set_text_compression_strategy@PrivatePng@@YAXPAUpng_struct_def@1@H@Z @ 13322 NONAME ; void PrivatePng::png_set_text_compression_strategy(struct PrivatePng::png_struct_def *, int) + ?png_set_text_compression_window_bits@PrivatePng@@YAXPAUpng_struct_def@1@H@Z @ 13323 NONAME ; void PrivatePng::png_set_text_compression_window_bits(struct PrivatePng::png_struct_def *, int) + ?png_set_unknown_chunk_location@PrivatePng@@YAXPAUpng_struct_def@1@PAUpng_info_def@1@HH@Z @ 13324 NONAME ; void PrivatePng::png_set_unknown_chunk_location(struct PrivatePng::png_struct_def *, struct PrivatePng::png_info_def *, int, int) + ?png_set_unknown_chunks@PrivatePng@@YAXPAUpng_struct_def@1@PAUpng_info_def@1@PBUpng_unknown_chunk_t@1@H@Z @ 13325 NONAME ; void PrivatePng::png_set_unknown_chunks(struct PrivatePng::png_struct_def *, struct PrivatePng::png_info_def *, struct PrivatePng::png_unknown_chunk_t const *, int) + ?png_set_user_limits@PrivatePng@@YAXPAUpng_struct_def@1@II@Z @ 13326 NONAME ; void PrivatePng::png_set_user_limits(struct PrivatePng::png_struct_def *, unsigned int, unsigned int) + ?png_set_user_transform_info@PrivatePng@@YAXPAUpng_struct_def@1@PAXHH@Z @ 13327 NONAME ; void PrivatePng::png_set_user_transform_info(struct PrivatePng::png_struct_def *, void *, int, int) + ?png_set_write_fn@PrivatePng@@YAXPAUpng_struct_def@1@PAXP6AX0PAEI@ZP6AX0@Z@Z @ 13328 NONAME ; void PrivatePng::png_set_write_fn(struct PrivatePng::png_struct_def *, void *, void (*)(struct PrivatePng::png_struct_def *, unsigned char *, unsigned int), void (*)(struct PrivatePng::png_struct_def *)) + ?png_set_write_status_fn@PrivatePng@@YAXPAUpng_struct_def@1@P6AX0IH@Z@Z @ 13329 NONAME ; void PrivatePng::png_set_write_status_fn(struct PrivatePng::png_struct_def *, void (*)(struct PrivatePng::png_struct_def *, unsigned int, int)) + ?png_set_write_user_transform_fn@PrivatePng@@YAXPAUpng_struct_def@1@P6AX0PAUpng_row_info_struct@1@PAE@Z@Z @ 13330 NONAME ; void PrivatePng::png_set_write_user_transform_fn(struct PrivatePng::png_struct_def *, void (*)(struct PrivatePng::png_struct_def *, struct PrivatePng::png_row_info_struct *, unsigned char *)) + ?png_sig_cmp@PrivatePng@@YAHPBEII@Z @ 13331 NONAME ; int PrivatePng::png_sig_cmp(unsigned char const *, unsigned int, unsigned int) + ?png_start_read_image@PrivatePng@@YAXPAUpng_struct_def@1@@Z @ 13332 NONAME ; void PrivatePng::png_start_read_image(struct PrivatePng::png_struct_def *) + ?png_warning@PrivatePng@@YAXPAUpng_struct_def@1@PBD@Z @ 13333 NONAME ; void PrivatePng::png_warning(struct PrivatePng::png_struct_def *, char const *) + ?png_write_chunk@PrivatePng@@YAXPAUpng_struct_def@1@PBE1I@Z @ 13334 NONAME ; void PrivatePng::png_write_chunk(struct PrivatePng::png_struct_def *, unsigned char const *, unsigned char const *, unsigned int) + ?png_write_chunk_data@PrivatePng@@YAXPAUpng_struct_def@1@PBEI@Z @ 13335 NONAME ; void PrivatePng::png_write_chunk_data(struct PrivatePng::png_struct_def *, unsigned char const *, unsigned int) + ?png_write_chunk_end@PrivatePng@@YAXPAUpng_struct_def@1@@Z @ 13336 NONAME ; void PrivatePng::png_write_chunk_end(struct PrivatePng::png_struct_def *) + ?png_write_chunk_start@PrivatePng@@YAXPAUpng_struct_def@1@PBEI@Z @ 13337 NONAME ; void PrivatePng::png_write_chunk_start(struct PrivatePng::png_struct_def *, unsigned char const *, unsigned int) + ?png_write_end@PrivatePng@@YAXPAUpng_struct_def@1@PAUpng_info_def@1@@Z @ 13338 NONAME ; void PrivatePng::png_write_end(struct PrivatePng::png_struct_def *, struct PrivatePng::png_info_def *) + ?png_write_flush@PrivatePng@@YAXPAUpng_struct_def@1@@Z @ 13339 NONAME ; void PrivatePng::png_write_flush(struct PrivatePng::png_struct_def *) + ?png_write_image@PrivatePng@@YAXPAUpng_struct_def@1@PAPAE@Z @ 13340 NONAME ; void PrivatePng::png_write_image(struct PrivatePng::png_struct_def *, unsigned char * *) + ?png_write_info@PrivatePng@@YAXPAUpng_struct_def@1@PAUpng_info_def@1@@Z @ 13341 NONAME ; void PrivatePng::png_write_info(struct PrivatePng::png_struct_def *, struct PrivatePng::png_info_def *) + ?png_write_info_before_PLTE@PrivatePng@@YAXPAUpng_struct_def@1@PAUpng_info_def@1@@Z @ 13342 NONAME ; void PrivatePng::png_write_info_before_PLTE(struct PrivatePng::png_struct_def *, struct PrivatePng::png_info_def *) + ?png_write_png@PrivatePng@@YAXPAUpng_struct_def@1@PAUpng_info_def@1@HPAX@Z @ 13343 NONAME ; void PrivatePng::png_write_png(struct PrivatePng::png_struct_def *, struct PrivatePng::png_info_def *, int, void *) + ?png_write_row@PrivatePng@@YAXPAUpng_struct_def@1@PBE@Z @ 13344 NONAME ; void PrivatePng::png_write_row(struct PrivatePng::png_struct_def *, unsigned char const *) + ?png_write_rows@PrivatePng@@YAXPAUpng_struct_def@1@PAPAEI@Z @ 13345 NONAME ; void PrivatePng::png_write_rows(struct PrivatePng::png_struct_def *, unsigned char * *, unsigned int) + ?png_write_sig@PrivatePng@@YAXPAUpng_struct_def@1@@Z @ 13346 NONAME ; void PrivatePng::png_write_sig(struct PrivatePng::png_struct_def *) ?clipEnabledChanged@QBlitterPaintEngine@@UAEXXZ @ 13347 NONAME ; void QBlitterPaintEngine::clipEnabledChanged(void) ?qt_static_metacall@QEventDispatcherS60@@CAXPAVQObject@@W4Call@QMetaObject@@HPAPAX@Z @ 13348 NONAME ; void QEventDispatcherS60::qt_static_metacall(class QObject *, enum QMetaObject::Call, int, void * *) ?supportsSubPixelPositions@QFontEngine@@UBE_NXZ @ 13349 NONAME ; bool QFontEngine::supportsSubPixelPositions(void) const @@ -13990,3 +13990,11 @@ EXPORTS ?resetFontEngineCache@QTextEngine@@QAEXXZ @ 13989 NONAME ; void QTextEngine::resetFontEngineCache(void) ?symbianHandleLiteModeStartup@QApplicationPrivate@@QAEXXZ @ 13990 NONAME ; void QApplicationPrivate::symbianHandleLiteModeStartup(void) ?_q_cleanupWinIds@QWidgetPrivate@@QAEXXZ @ 13991 NONAME ; void QWidgetPrivate::_q_cleanupWinIds(void) + ?qt_s60_setEditorFlags@@YAXH@Z @ 13992 NONAME ; void qt_s60_setEditorFlags(int) + ?adjustViewOptionsForIndex@QTreeViewPrivate@@UBEXPAVQStyleOptionViewItemV4@@ABVQModelIndex@@@Z @ 13993 NONAME ; void QTreeViewPrivate::adjustViewOptionsForIndex(class QStyleOptionViewItemV4 *, class QModelIndex const &) const + ?setNativePaintMode@QSymbianGraphicsSystemHelper@@SAXPAVQWidget@@W4NativePaintMode@1@@Z @ 13994 NONAME ; void QSymbianGraphicsSystemHelper::setNativePaintMode(class QWidget *, enum QSymbianGraphicsSystemHelper::NativePaintMode) + ?calcLogicalIndices@QTreeViewPrivate@@QBEXPAV?$QVector@H@@PAV?$QVector@W4ViewItemPosition@QStyleOptionViewItemV4@@@@@Z @ 13995 NONAME ; void QTreeViewPrivate::calcLogicalIndices(class QVector<int> *, class QVector<enum QStyleOptionViewItemV4::ViewItemPosition> *) const + ?setReceiveNativePaintEvents@QSymbianGraphicsSystemHelper@@SAXPAVQWidget@@_N@Z @ 13996 NONAME ; void QSymbianGraphicsSystemHelper::setReceiveNativePaintEvents(class QWidget *, bool) + ?setNativePaintMode@QSymbianGraphicsSystemHelper@@SAXPAVCCoeControl@@W4NativePaintMode@1@@Z @ 13997 NONAME ; void QSymbianGraphicsSystemHelper::setNativePaintMode(class CCoeControl *, enum QSymbianGraphicsSystemHelper::NativePaintMode) + ?setIgnoreFocusChanged@QSymbianGraphicsSystemHelper@@SAXPAVQWidget@@_N@Z @ 13998 NONAME ; void QSymbianGraphicsSystemHelper::setIgnoreFocusChanged(class QWidget *, bool) + diff --git a/src/s60installs/bwins/QtNetworku.def b/src/s60installs/bwins/QtNetworku.def index 2f8a7de..e03c024 100644 --- a/src/s60installs/bwins/QtNetworku.def +++ b/src/s60installs/bwins/QtNetworku.def @@ -1258,4 +1258,6 @@ EXPORTS ?metaObject@QHttpMultiPart@@UBEPBUQMetaObject@@XZ @ 1257 NONAME ; struct QMetaObject const * QHttpMultiPart::metaObject(void) const ?qt_static_metacall@QNetworkSession@@CAXPAVQObject@@W4Call@QMetaObject@@HPAPAX@Z @ 1258 NONAME ; void QNetworkSession::qt_static_metacall(class QObject *, enum QMetaObject::Call, int, void * *) ?startPolling@QNetworkConfigurationManagerPrivate@@AAEXXZ @ 1259 NONAME ; void QNetworkConfigurationManagerPrivate::startPolling(void) + ?testSslOption@QSslConfiguration@@QBE_NW4SslOption@QSsl@@@Z @ 1260 NONAME ; bool QSslConfiguration::testSslOption(enum QSsl::SslOption) const + ?setSslOption@QSslConfiguration@@QAEXW4SslOption@QSsl@@_N@Z @ 1261 NONAME ; void QSslConfiguration::setSslOption(enum QSsl::SslOption, bool) diff --git a/src/s60installs/bwins/QtOpenGLu.def b/src/s60installs/bwins/QtOpenGLu.def index 664e981..ed73a33 100644 --- a/src/s60installs/bwins/QtOpenGLu.def +++ b/src/s60installs/bwins/QtOpenGLu.def @@ -878,4 +878,6 @@ EXPORTS ?glGetShaderPrecisionFormat@QGLFunctions@@QAEXIIPAH0@Z @ 877 NONAME ; void QGLFunctions::glGetShaderPrecisionFormat(unsigned int, unsigned int, int *, int *) ?qt_static_metacall@QGLShaderProgram@@CAXPAVQObject@@W4Call@QMetaObject@@HPAPAX@Z @ 878 NONAME ; void QGLShaderProgram::qt_static_metacall(class QObject *, enum QMetaObject::Call, int, void * *) ?insert@QGLContextGroupResourceBase@@QAEXPBVQGLContext@@PAX@Z @ 879 NONAME ; void QGLContextGroupResourceBase::insert(class QGLContext const *, void *) + ?contextDeleted@QGLContextGroupResourceBase@@UAEXPBVQGLContext@@@Z @ 880 NONAME ; void QGLContextGroupResourceBase::contextDeleted(class QGLContext const *) + ?contextDeleted@QGLTextureGlyphCache@@UAEXPBVQGLContext@@@Z @ 881 NONAME ; void QGLTextureGlyphCache::contextDeleted(class QGLContext const *) diff --git a/src/s60installs/bwins/QtOpenVGu.def b/src/s60installs/bwins/QtOpenVGu.def index 547931e..dc1ddce 100644 --- a/src/s60installs/bwins/QtOpenVGu.def +++ b/src/s60installs/bwins/QtOpenVGu.def @@ -159,7 +159,7 @@ EXPORTS ?hibernate@QVGImagePool@@UAEXXZ @ 158 NONAME ; void QVGImagePool::hibernate(void) ?qt_vg_destroy_context@@YAXPAVQEglContext@@H@Z @ 159 NONAME ; void qt_vg_destroy_context(class QEglContext *, int) ??0QVGImagePool@@QAE@XZ @ 160 NONAME ; QVGImagePool::QVGImagePool(void) - ?setImagePool@QVGImagePool@@SAXPAV1@@Z @ 161 NONAME ; void QVGImagePool::setImagePool(class QVGImagePool *) + ?setImagePool@QVGImagePool@@SAXPAV1@@Z @ 161 NONAME ABSENT ; void QVGImagePool::setImagePool(class QVGImagePool *) ?pixmapLRU@QVGImagePool@@IAEPAVQVGPixmapData@@XZ @ 162 NONAME ; class QVGPixmapData * QVGImagePool::pixmapLRU(void) ?qt_vg_create_context@@YAPAVQEglContext@@PAVQPaintDevice@@H@Z @ 163 NONAME ; class QEglContext * qt_vg_create_context(class QPaintDevice *, int) ?reclaimImages@QVGPixmapData@@UAEXXZ @ 164 NONAME ; void QVGPixmapData::reclaimImages(void) diff --git a/src/s60installs/eabi/QtCoreu.def b/src/s60installs/eabi/QtCoreu.def index 5436390..44aa48c 100644 --- a/src/s60installs/eabi/QtCoreu.def +++ b/src/s60installs/eabi/QtCoreu.def @@ -4165,4 +4165,8 @@ EXPORTS _ZN14QFactoryLoader9updateDirERK7QStringR9QSettings @ 4164 NONAME _ZN23QCoreApplicationPrivate26rebuildInstallLibraryPathsEv @ 4165 NONAME _ZN13QActiveObject18maybeQueueForLaterEv @ 4166 NONAME + _ZN21QSymbianSocketManager19addActiveConnectionEm @ 4167 NONAME + _ZN21QSymbianSocketManager22removeActiveConnectionEm @ 4168 NONAME + _ZN23QEventDispatcherSymbian17activeObjectErrorEi @ 4169 NONAME + _ZNK21QSymbianSocketManager17activeConnectionsEv @ 4170 NONAME diff --git a/src/s60installs/eabi/QtGuiu.def b/src/s60installs/eabi/QtGuiu.def index f667bab..8aaa65d 100644 --- a/src/s60installs/eabi/QtGuiu.def +++ b/src/s60installs/eabi/QtGuiu.def @@ -12803,3 +12803,11 @@ EXPORTS _ZN11QTextEngine20resetFontEngineCacheEv @ 12802 NONAME _ZN14QWidgetPrivate16_q_cleanupWinIdsEv @ 12803 NONAME _ZN19QApplicationPrivate28symbianHandleLiteModeStartupEv @ 12804 NONAME + _Z21qt_s60_setEditorFlagsi @ 12805 NONAME + _ZN28QSymbianGraphicsSystemHelper18setNativePaintModeEP11CCoeControlNS_15NativePaintModeE @ 12806 NONAME + _ZN28QSymbianGraphicsSystemHelper18setNativePaintModeEP7QWidgetNS_15NativePaintModeE @ 12807 NONAME + _ZN28QSymbianGraphicsSystemHelper21setIgnoreFocusChangedEP7QWidgetb @ 12808 NONAME + _ZN28QSymbianGraphicsSystemHelper27setReceiveNativePaintEventsEP7QWidgetb @ 12809 NONAME + _ZNK16QTreeViewPrivate18calcLogicalIndicesEP7QVectorIiEPS0_IN22QStyleOptionViewItemV416ViewItemPositionEE @ 12810 NONAME + _ZNK16QTreeViewPrivate25adjustViewOptionsForIndexEP22QStyleOptionViewItemV4RK11QModelIndex @ 12811 NONAME + diff --git a/src/s60installs/eabi/QtNetworku.def b/src/s60installs/eabi/QtNetworku.def index 6e7dedd..54f5b5f 100644 --- a/src/s60installs/eabi/QtNetworku.def +++ b/src/s60installs/eabi/QtNetworku.def @@ -1270,4 +1270,6 @@ EXPORTS _ZNK9QHttpParteqERKS_ @ 1269 NONAME _ZTI14QHttpMultiPart @ 1270 NONAME _ZTV14QHttpMultiPart @ 1271 NONAME + _ZN17QSslConfiguration12setSslOptionEN4QSsl9SslOptionEb @ 1272 NONAME + _ZNK17QSslConfiguration13testSslOptionEN4QSsl9SslOptionE @ 1273 NONAME diff --git a/src/s60installs/eabi/QtOpenGLu.def b/src/s60installs/eabi/QtOpenGLu.def index 2d9aa8f..edb5e03 100644 --- a/src/s60installs/eabi/QtOpenGLu.def +++ b/src/s60installs/eabi/QtOpenGLu.def @@ -782,4 +782,5 @@ EXPORTS _ZThn104_N20QGLTextureGlyphCacheD0Ev @ 781 NONAME _ZThn104_N20QGLTextureGlyphCacheD1Ev @ 782 NONAME _ZThn8_NK16QGLWindowSurface8featuresEv @ 783 NONAME + _ZN27QGLContextGroupResourceBase14contextDeletedEPK10QGLContext @ 784 NONAME diff --git a/src/s60installs/eabi/QtOpenVGu.def b/src/s60installs/eabi/QtOpenVGu.def index a66df98..f87c71d 100644 --- a/src/s60installs/eabi/QtOpenVGu.def +++ b/src/s60installs/eabi/QtOpenVGu.def @@ -176,7 +176,7 @@ EXPORTS _ZN12QVGImagePool11detachImageEP13QVGPixmapData @ 175 NONAME _ZN12QVGImagePool12reclaimSpaceE13VGImageFormatllP13QVGPixmapData @ 176 NONAME _ZN12QVGImagePool12releaseImageEP13QVGPixmapDatam @ 177 NONAME - _ZN12QVGImagePool12setImagePoolEPS_ @ 178 NONAME + _ZN12QVGImagePool12setImagePoolEPS_ @ 178 NONAME ABSENT _ZN12QVGImagePool13removeFromLRUEP13QVGPixmapData @ 179 NONAME _ZN12QVGImagePool15moveToHeadOfLRUEP13QVGPixmapData @ 180 NONAME _ZN12QVGImagePool20createImageForPixmapE13VGImageFormatllmP13QVGPixmapData @ 181 NONAME diff --git a/src/s60installs/s60installs.pro b/src/s60installs/s60installs.pro index 08c4829..08c4829 100755..100644 --- a/src/s60installs/s60installs.pro +++ b/src/s60installs/s60installs.pro diff --git a/src/sql/drivers/sqlite/qsql_sqlite.cpp b/src/sql/drivers/sqlite/qsql_sqlite.cpp index 9fba6d6..38e4a63 100644 --- a/src/sql/drivers/sqlite/qsql_sqlite.cpp +++ b/src/sql/drivers/sqlite/qsql_sqlite.cpp @@ -104,6 +104,7 @@ class QSQLiteDriverPrivate public: inline QSQLiteDriverPrivate() : access(0) {} sqlite3 *access; + QList <QSQLiteResult *> results; }; @@ -286,10 +287,12 @@ QSQLiteResult::QSQLiteResult(const QSQLiteDriver* db) { d = new QSQLiteResultPrivate(this); d->access = db->d->access; + db->d->results.append(this); } QSQLiteResult::~QSQLiteResult() { + qobject_cast<const QSQLiteDriver *>(driver())->d->results.removeOne(this); d->cleanup(); delete d; } @@ -322,12 +325,14 @@ bool QSQLiteResult::prepare(const QString &query) setSelect(false); + const void *pzTail = NULL; + #if (SQLITE_VERSION_NUMBER >= 3003011) int res = sqlite3_prepare16_v2(d->access, query.constData(), (query.size() + 1) * sizeof(QChar), - &d->stmt, 0); + &d->stmt, &pzTail); #else int res = sqlite3_prepare16(d->access, query.constData(), (query.size() + 1) * sizeof(QChar), - &d->stmt, 0); + &d->stmt, &pzTail); #endif if (res != SQLITE_OK) { @@ -335,6 +340,11 @@ bool QSQLiteResult::prepare(const QString &query) "Unable to execute statement"), QSqlError::StatementError, res)); d->finalize(); return false; + } else if (pzTail && !QString(reinterpret_cast<const QChar *>(pzTail)).trimmed().isEmpty()) { + setLastError(qMakeError(d->access, QCoreApplication::translate("QSQLiteResult", + "Unable to execute multiple statements at a time"), QSqlError::StatementError, SQLITE_MISUSE)); + d->finalize(); + return false; } return true; } @@ -546,6 +556,10 @@ bool QSQLiteDriver::open(const QString & db, const QString &, const QString &, c void QSQLiteDriver::close() { if (isOpen()) { + foreach (QSQLiteResult *result, d->results) { + result->d->finalize(); + } + if (sqlite3_close(d->access) != SQLITE_OK) setLastError(qMakeError(d->access, tr("Error closing database"), QSqlError::ConnectionError)); diff --git a/src/sql/kernel/qsqlquery.cpp b/src/sql/kernel/qsqlquery.cpp index 361730a..753e4f8 100644 --- a/src/sql/kernel/qsqlquery.cpp +++ b/src/sql/kernel/qsqlquery.cpp @@ -338,6 +338,9 @@ bool QSqlQuery::isNull(int field) const Note that the last error for this query is reset when exec() is called. + For SQLite, the query string can contain only one statement at a time. + If more than one statements is give, the function returns false. + Example: \snippet doc/src/snippets/sqldatabase/sqldatabase.cpp 34 @@ -887,6 +890,9 @@ void QSqlQuery::clear() syntactically wrong query succeeds, but every consecutive exec() will fail. + For SQLite, the query string can contain only one statement at a time. + If more than one statements are give, the function returns false. + Example: \snippet doc/src/snippets/sqldatabase/sqldatabase.cpp 9 diff --git a/src/testlib/3rdparty/valgrind_p.h b/src/testlib/3rdparty/valgrind_p.h index 6380a9f..70ba371 100644 --- a/src/testlib/3rdparty/valgrind_p.h +++ b/src/testlib/3rdparty/valgrind_p.h @@ -3703,8 +3703,8 @@ VALGRIND_PRINTF_BACKTRACE(const char *format, ...) /* These requests allow control to move from the simulated CPU to the - real CPU, calling an arbitary function. - + real CPU, calling an arbitrary function. + Note that the current ThreadId is inserted as the first argument. So this call: diff --git a/src/testlib/qxmltestlogger.cpp b/src/testlib/qxmltestlogger.cpp index 2c8ba6c..1cb221c 100644 --- a/src/testlib/qxmltestlogger.cpp +++ b/src/testlib/qxmltestlogger.cpp @@ -120,14 +120,14 @@ void QXmlTestLogger::startLogging() QTest::qt_asprintf(&buf, "<Environment>\n" " <QtVersion>%s</QtVersion>\n" - " <QTestVersion>"QTEST_VERSION_STR"</QTestVersion>\n" + " <QTestVersion>" QTEST_VERSION_STR "</QTestVersion>\n" " <RandomSeed>%d</RandomSeed>\n" "</Environment>\n", qVersion(), randomSeed); } else { QTest::qt_asprintf(&buf, "<Environment>\n" " <QtVersion>%s</QtVersion>\n" - " <QTestVersion>"QTEST_VERSION_STR"</QTestVersion>\n" + " <QTestVersion>" QTEST_VERSION_STR "</QTestVersion>\n" "</Environment>\n", qVersion()); } outputString(buf.constData()); diff --git a/src/xml/dom/qdom.cpp b/src/xml/dom/qdom.cpp index 7c7cafc..ccc6e8b 100644 --- a/src/xml/dom/qdom.cpp +++ b/src/xml/dom/qdom.cpp @@ -3487,10 +3487,10 @@ QDomDocumentTypePrivate::QDomDocumentTypePrivate(QDomDocumentTypePrivate* n, boo QDomNodePrivate* p = first; while (p) { if (p->isEntity()) - // Dont use normal insert function since we would create infinite recursion + // Don't use normal insert function since we would create infinite recursion entities->map.insertMulti(p->nodeName(), p); if (p->isNotation()) - // Dont use normal insert function since we would create infinite recursion + // Don't use normal insert function since we would create infinite recursion notations->map.insertMulti(p->nodeName(), p); p = p->next; } @@ -5725,7 +5725,7 @@ static QByteArray encodeEntity(const QByteArray& str) len += 4; i += 5; } else if (d[i] == '&' && i + 1 < len && d[i+1] == '#') { - // Dont encode < or " or &custom;. + // Don't encode < or " or &custom;. // Only encode character references tmp.replace(i, 1, "&"); d = tmp; |