I was able to compile and debug my app on MacOS with QT Creator:

All C++ code compiled successfully, but something went wrong with OpenGLES shaders. It is probably because I included OpenGLES headers from a wrong place.
(more…)If I enable Gesture mode on an Android 10 emulator by tapping System->Gestures->System Navigation->Gesture Navigation and then deactivate my app by swiping and reactivate it back, I get the following in the log:
adb logcat | grep "\ Lines"
05-04 21:52:36.389 11794 11939 D Lines : Squircle::aboutToQuit()
05-04 21:52:36.389 11794 11939 D Lines : InterstitialAdWrapper clear() called.
05-04 21:52:36.392 11794 11939 D Lines : InterstitialAdWrapper InterstitialAd destructor called.
05-04 21:52:36.393 11794 11939 D Lines : Squircle destructor called.
05-04 21:52:36.396 11794 11939 W Lines : exit app 0
...
05-04 21:52:37.032 11794 11939 D Lines : OslSoundPool destructor
05-04 21:52:37.117 2040 2134 W InputDispatcher: channel '8474831 net.geographx.LinesGame/net.geographx.MainActivity (server)' ~ Consumer closed input channel or an error occurred. events=0x9
05-04 21:52:37.117 2040 2134 E InputDispatcher: channel '8474831 net.geographx.LinesGame/net.geographx.MainActivity (server)' ~ Channel is unrecoverably broken and will be disposed!
05-04 21:52:37.123 2040 3120 I WindowManager: WIN DEATH: Window{8474831 u0 net.geographx.LinesGame/net.geographx.MainActivity}
05-04 21:52:37.123 2040 3120 W InputDispatcher: Attempted to unregister already unregistered input channel '8474831 net.geographx.LinesGame/net.geographx.MainActivity (server)'
05-04 21:52:37.136 2040 3120 W ActivityManager: Scheduling restart of crashed service net.geographx.LinesGame/org.chromium.content.app.SandboxedProcessService0 in 1000ms
05-04 21:52:37.151 2040 2057 I ActivityManager: Process net.geographx.LinesGame (pid 11794) has died: cch CRE
05-04 21:52:38.034 2040 2057 I ActivityTaskManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=net.geographx.LinesGame/net.geographx.MainActivity bnds=[37,882][238,1191]} from uid 10090
05-04 21:52:38.055 2040 2057 I chatty : uid=1000(system) Binder:2040_2 identical 8 lines
05-04 21:52:38.099 2040 2072 I ActivityManager: Start proc 12702:net.geographx.LinesGame/u0a134 for activity {net.geographx.LinesGame/net.geographx.MainActivity}
05-04 21:52:38.101 12702 12702 W raphx.LinesGam: Unexpected CPU variant for X86 using defaults: x86
05-04 21:52:38.124 12702 12702 E raphx.LinesGam: Not starting debugger since process cannot load the jdwp agent.
...
05-04 21:52:38.966 2040 2069 I ActivityTaskManager: Displayed net.geographx.LinesGame/net.geographx.MainActivity: +931ms
05-04 21:52:39.062 12702 12826 D libLinesGameQt_x86.so: Translation file has been loaded successfully: "LinesGame_en"
05-04 21:52:39.062 12702 12826 D Lines : App version: "2.5.11, #133"
05-04 21:52:39.072 12702 12826 D Lines : QT/SysInfo: Device Pixel Ratio: 3 Screen DPI: 147.131
05-04 21:52:39.106 12702 12826 D Lines : InterstitialAdWrapper valid
05-04 21:52:39.185 12702 12826 D Lines : qml: Registering adfree
05-04 21:52:39.189 7632 9145 W Finsky : [672] gcs.d(23): net.geographx.LinesGame: No account found.
05-04 21:52:39.411 12702 12826 D Lines : qml: adfree Component.onCompleted
05-04 21:52:39.413 12702 12826 D Lines : InterstitialAdWrapper: calling Java method ' initializeInterstitialAd ' from C++
05-04 21:52:39.413 12702 12826 D Lines : Starting the application event loop...
05-04 21:52:39.463 12702 12826 D Lines : onApplicationStateChanged(Qt::ApplicationActive)
I did some research on why my QT app crashes at the destructor of std::thread on Android 10 devices at the user side with the following call stack:
#00 /apex/com.android.runtime/lib64/bionic/libc.so (abort+160)
#01 /system/lib64/libc++.so (abort_message+232)
#02 /system/lib64/libc++.so (demangling_terminate_handler()+44)
#03 /system/lib64/libc++.so (std::__terminate(void (*)())+12)
#04 /system/lib64/libc++.so (std::terminate()+52)
#05 /system/lib64/libc++.so (std::__1::thread::~thread()+20)
#06 /apex/com.android.runtime/lib64/bionic/libc.so (__cxa_finalize+212)
#07 /apex/com.android.runtime/lib64/bionic/libc.so (exit+24)
#08 /data/app/com.domain.myapp-Rs_sm5VrLR1Jj8QW6oYByA==/lib/arm64/libplugins_platforms_qtforandroid_arm64-v8a.so
and figured out that its likely because std::thread destructor is being invoked while the thread is still joinable at some point of the application execution (thanks to G. M. on stackoverflow.com).
(more…)If I use CCXT on my Windows machine I periodically get ‘Timestamp for this request is outside of the recvWindow’ error.
Exchange has the following options by default:
Calculating disk space usage per MySQL DB:
sudo du -h /var/lib/mysql/
932M /var/lib/mysql/beauty
179M /var/lib/mysql/slogpost
485M /var/lib/mysql/omegauto
8.0K /var/lib/mysql/test
676K /var/lib/mysql/sys
22G /var/lib/mysql/bot
79M /var/lib/mysql/master
11M /var/lib/mysql/mysql
176K /var/lib/mysql/phpmyadmin
21M /var/lib/mysql/shar
127M /var/lib/mysql/mike
1.1M /var/lib/mysql/performance_schema
79M /var/lib/mysql/devnote
12M /var/lib/mysql/mike1
48K /var/lib/mysql/game
24G /var/lib/mysql/
I wrote a simple test that outputs std::memmove speed to the console:
AWT_ATTRIBUTE(size_t, element_count, 1000000);
std::unique_ptr<uint8_t> p_src(new uint8_t[element_count]);
std::memset(p_src.get(), 25u, element_count);
std::unique_ptr<uint8_t> p_dst(new uint8_t[element_count]);
context.out << _T("std::memmove: ");
awl::StopWatch w;
std::memmove(p_dst.get(), p_src.get(), element_count);
ReportSpeed(context, w, element_count);
context.out << std::endl;
And the similar tests for std::memset and std::vector::insert.
(more…)In the code below, static_assert operates on the addresses of local variables, but however MS compiles it and the assertion does not fail:
#include <tuple>
#include <string>
struct A
{
int a;
double b;
std::string c;
};
void f()
{
A a{ 1, 3.0, "abc" };
constexpr auto t1 = std::tie(a.a, a.b, a.c);
static_assert(&std::get<0>(t1) == &a.a);
}
Use the following command to compile this example:
cl /std:c++17 /EHsc a.cpp
I created an unlockable product in Google Play, added billing permission to the manifest:
<uses-permission android:name="com.android.vending.BILLING"/>
and implemented billing in my application, but when I attempted to purchase the product first time I got error ‘This version of the application is not configured for billing through Google Play‘:
Consider the following scenario: there was structure A in an old version of a C++ application:
struct A
{
double a;
int b;
std::string c;
};
An instance of A was serialized into a file in a binary format and after that the application was updated to a new version.
But in the new version of the application structure A was modified by adding fields d and e and deleting field a:
struct A
{
int b;
std::vector<int> d;
bool e;
std::string c;
};
and the new version of the application needs to deserialize an instance of its new structure A from the file containing old version of A.
(more…)