libacfutils's People
Forkers
sksadri xkeys g0wfv jt8d-17 cvelevet doylemark amyinorbit kuroneko jarangmandi ddunwoody coop1019 pilsnerish judemille chh2000day todirbg daemotron olivierbutlerlibacfutils's Issues
depends on libclipboard
Hi,
the compile process (paste.c) depends on libclipboard. I could not find this as a package, I guess it's https://jtanx.github.io/libclipboard ? At lest it compiles with this.
May be it should be added to the prereqs as well.
Best
Holger
widget.c: tooltip is flashing every 0.1s/1s
The tooltip is appearing only 0.1s every 1s
Proposal
In function tooltip_floop_cb line 551
if (last_mouse_x != mouse_x || last_mouse_y != mouse_y /*|| <-- removing tooltip_invalid() fix the issue
tooltip_invalid()*/) {
last_mouse_x = mouse_x;
last_mouse_y = mouse_y;
mouse_moved_time = now;
if (cur_tt != NULL)
destroy_cur_tt();
return (TOOLTIP_INTVAL);
}
The drawback is that the tooltip appears if there is an other window over, but according Laminar XPLMIsWindowInFront may return an incorrect value.
Thus, if you have a window at the front of the floating window layer (xplm_WindowLayerFloatingWindows), this will return true even if there is a modal window (in layer xplm_WindowLayerModal) above you. (Not to worry, though: in such a case, X-Plane will not pass clicks or keyboard input down to your layer until the window above stops “eating” the input.)
Fixing the get_first_monitor_bounds function
Lines 140 to 168 in 9f4b74e
Hi,
I'm nico87 from SimCoders.
I see that you're facing the same issue I faced few months ago while trying to improve the multi-monitor support in my plugin.
I was not actually able to figure out a reliable way to identify the main monitor and its bounds at once. So what I did is provide the user an option to set the proper monitor index that he wants to use as main for my plugin's windows.
Then, here's the simplified code I use to identify the proper coordinates. It worked reliably until now. I see that in your code you're doing more math but the solution is actually straightforward.
The code below is simplified because as I support more SDK versions, I have to use function pointers and figure out the proper SDK functions to use and it makes the code more difficult to read.
static monitor_t
get_first_monitor_bounds(void)
{
monitor_t monitor;
XPLMGetAllMonitorBoundsGlobal(find_first_monitor, &monitor);
// Before XP11.30 there was a ugly bug :-/
if (outXPlaneVersion < 11300) {
// Just swap monitor.top and monitor.bottom
int swap = monitor.top;
monitor.top = monitor.bottom;
monitor.bottom = swap;
}
return (monitor);
}
Cairo replacement
Hi,
OpenGL has been removed from X-Plane from X-Plane 12 onwards. It is a vulkan only simulator. As a result, I'd like to know if there is a plan to replaced cairo (which appears to have dropped OpenGL) with a vulkan equivalent. Thanks,
Outdated beta XP SDK
The SDK version in this package looks like an old beta version dated from last year when XP12 itself was in beta. There is a newer version 4.0.1 released earlier this year.
XPSDK401.zip
building on ubuntu linux 18.04
I end up with the following GLXEWContext unknown type error when building:
In file included from ../src/glew_os.c:19:0:
../src/acfutils/glew_os.h:53:21: error: unknown type name ‘GLXEWContext’
extern THREAD_LOCAL GLXEWContext lacf_glxew_per_thread_ctx;
I am using the regular Ubuntuo GLEW implementation. headers are found. So I started to look about your patches. I see that you patch these for Mac:
ctx_funcs_2.patch
ctx_funcs_1.patch
Shouldn't they also be patched for linux?
Reto
GCC 12 warns about possible integer overflow in safe_strdup
Hi I got this build error:
In file included from /usr/include/string.h:535, from ../src/airportdb.c:24: In function ‘memcpy’, inlined from ‘safe_strdup’ at ../src/acfutils/safe_alloc.h:187:2, inlined from ‘parse_apt_dat_1_line’ at ../src/airportdb.c:894:21, inlined from ‘read_apt_dat’ at ../src/airportdb.c:1557:11: /usr/include/x86_64-linux-gnu/bits/string_fortified.h:29:10: error: ‘__builtin_memcpy’ pointer overflow between offset 0 and size 18446744073709551615 [-Werror=array-bounds] 29 | return __builtin___memcpy_chk (__dest, __src, __len, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 30 | __glibc_objsize0 (__dest)); | ~~~~~~~~~~~~~~~~~~~~~~~~~~
Fixed it by changing "int l" to "size_t l" in safe_strdup function. Linux xubuntu 22.04 gcc 12.3.0
Acfutils build fails at "TEST_GLSL_VERSION" and "GLEW_ARB_gl_spirv"
After applying bandaids to much of the dependency build process and much of the libacfutils build process (it's been hell on earth so far), I'm stuck.
../src/shader.c: In function ‘shader_from_spirv_fallback’:
../src/shader.c:135:27: error: ‘GLEW_VERSION_4_6’ undeclared (first use in this function); did you mean ‘GLEW_VERSION_4_3’?
135 | TEST_GLSL_VERSION(GLEW_VERSION_4_6, "glsl460");
| ^~~~~~~~~~~~~~~~
../src/shader.c:126:33: note: in definition of macro ‘TEST_GLSL_VERSION’
126 | if (!loaded && (version)) {
| ^~~~~~~
../src/shader.c:135:27: note: each undeclared identifier is reported only once for each function it appears in
135 | TEST_GLSL_VERSION(GLEW_VERSION_4_6, "glsl460");
| ^~~~~~~~~~~~~~~~
../src/shader.c:126:33: note: in definition of macro ‘TEST_GLSL_VERSION’
126 | if (!loaded && (version)) {
| ^~~~~~~
../src/shader.c: In function ‘shader_from_spirv’:
../src/shader.c:237:14: error: ‘GLEW_ARB_gl_spirv’ undeclared (first use in this function)
237 | if (!GLEW_ARB_gl_spirv ||
| ^~~~~~~~~~~~~~~~~
../src/shader.c:238:40: error: ‘GL_SHADER_BINARY_FORMAT_SPIR_V’ undeclared (first use in this function); did you mean ‘GL_SHADER_BINARY_FORMATS’?
238 | !have_shader_binary_format(GL_SHADER_BINARY_FORMAT_SPIR_V) ||
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| GL_SHADER_BINARY_FORMATS
../src/shader.c:280:9: error: implicit declaration of function ‘glSpecializeShader’ [-Werror=implicit-function-declaration]
280 | glSpecializeShader(shader, entry_pt, n_spec, spec_indices, spec_values);
| ^~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
make[1]: *** [Makefile.Debug:1362: debug/shader.o] Error 1
make[1]: *** Waiting for unfinished jobs....
make[1]: Leaving directory '/media/Data/Git_Repos/libacfutils/qmake'
make: *** [Makefile:45: debug] Error 2
The header file chain does eventually point to GL/glew.h
as far as I can see and I've pointed qmake/qmake.pro
to INCLUDEPATH += ../glew/glew-1.13.0-linux-64/include
and applied that potential fix from another issue, i.e. DEFINES += GLEW_STATIC GLEW_MX
, but no success.
All I want is to compile a more up to date release of librain...
function conf_write is not writing in the conf file
**
- Writes a conf_t object to a file. Returns B_TRUE if the write was
- successful, B_FALSE otherwise.
*/
bool_t
conf_write(const conf_t *conf, FILE *fp)
{
return (conf_write_impl(conf, fp, 0, B_FALSE, B_FALSE)); <-- Last arg should be B_FALSE and not B_TRUE
}
Crash when loading shader and __imp____iob_func
Hey,
I built the dependencies and then build a redist version for Linux with Ubuntu 18.04.After that I put my include directory from acfutils in my include direction for my project and add the libs folder to my library search paths in Visual Studio 2019.When I try to load shaders, xplane just crashes with an abort().I initialized GLEW with glewInit() and after that I tried to load shaders from text with shader_prog_from_text_v(const char *progname, const char *vert_text, const char *frag_text, const shader_attr_bind_t *binds)
but then xp just crashes.Another thing is that when I try to use the log class, visual studio throws the error unresolved external symbol __imp____iob_func
for the log_backtrace function.Are their any known solutions for my problems ? :)
Strange build error
Hi, here is what it says:
../src/airportdb.c: In function ‘parse_apt_dat_1_line’:
../src/airportdb.c:625:16: error: passing argument 2 of ‘libiconv’ from incompatible pointer type [-Werror=incompatible-pointer-types]
625 | iconv(*cd_p, &conv_in, &conv_in_sz, &conv_out, &conv_out_sz);
| ^~~~~~~~
| |
| char **
In file included from ../src/airportdb.c:19:
/home/todir/Downloads/GitHub/libacfutils/libiconv/libiconv-win-64/include/iconv.h:82:48: note: expected ‘const char **’ but argument is of type ‘char **’
82 | extern size_t iconv (iconv_t cd, const char* * inbuf, size_t *inbytesleft, char* * outbuf, size_t *outbytesleft);
but if I change conv_in to const char *
../src/airportdb.c: In function ‘parse_apt_dat_1_line’:
../src/airportdb.c:625:16: error: passing argument 2 of ‘libiconv’ from incompatible pointer type [-Werror=incompatible-pointer-types]
625 | iconv(*cd_p, &conv_in, &conv_in_sz, &conv_out, &conv_out_sz);
| ^~~~~~~~
| |
| const char **
In file included from ../src/airportdb.c:19:
/home/todir/Downloads/GitHub/libacfutils/libiconv/libiconv-linux-64/include/iconv.h:82:43: note: expected ‘char **’ but argument is of type ‘const char **’
82 | extern size_t iconv (iconv_t cd, char* * inbuf, size_t *inbytesleft, char* * outbuf, size_t *outbytesleft);
Building on Mint(ubuntu 18.04) gcc10. gcc8 same err. Libacfutils ver 59727ea
I am lost. WTF?. Of course it builds fine with NOERRORS.
Building errors on Linux Mint/Ubuntu 22.04
Hi,
Running build_redist on the above OS, produced these errors:
../src/conf.c:28:10: fatal error: curl/curl.h: No such file or directory
28 | #include <curl/curl.h>
| ^~~~~~~~~~~~~
compilation terminated.
make[1]: *** [Makefile.Debug:515: debug/conf.o] Error 1
make[1]: *** Waiting for unfinished jobs....
../src/airportdb.c: In function ‘normalize_name’:
../src/airportdb.c:792:15: error: passing argument 2 of ‘libiconv’ from incompatible pointer type [-Werror=incompatible-pointer-types]
792 | iconv(*cd_p, &conv_in, &conv_in_sz, &conv_out, &conv_out_sz);
| ^~~~~~~~
| |
| char **
In file included from ../src/airportdb.c:19:
Is there a float/double comparsion function or macro?
Hi,
Is there a float/double almost equal comparison function or macro in the library or I should implement my own?
I looked but couldn't find one.
It is about this code in OpenWXR
DELAYED_DR_OP(&sys.gain_dr, gain_ctl = dr_getf(&sys.gain_dr.dr)); if (gain_ctl == sys.gain_auto_pos) gain = DFL_GAIN; else gain = wavg(MIN_GAIN, MAX_GAIN, clamp(gain_ctl, 0, 1)); intf->set_gain(wxr, gain);
It is unreliable in setting auto gain after gain dataref was changed and then return to auto position.
build_deps fail with configure: error: leptonica library with pdf support (>= 1.71) is missing
I run ./build_deps on Ubuntu 18.04 and after a while I get this error.
Is there any way to workaround it?
libacfutils.dll location and loading
When trying to load an X-Plane plugin linked against libacfutils.lib the plugin is not loaded and X-Plane crashes with a Visual C++ Runtime Library error: „This application has requested the Runtime to terminate it in an unusual way.“
Possible error should be missing VC++ Redistributables, but I don‘t know which ones are required for acfutils, actually I have 2008, 2010, 2012, 2013, 2015 and 2017 in 32 and 64 bit versions.
geographiclib build fails towards end of install stage
Doesn't seem to have any practical consequences on building lacfutils, but I figured it's noteworthy.
Making install in include
make[2]: Nothing to be done for `install-exec-am'.
/usr/local/bin/gmkdir -p '/Volumes/SSDRIVE/XP.GIT.REPOS/git4github/totoritko/libacfutils/geographiclib/geographiclib-mac-64/include'
/usr/local/bin/gmkdir -p '/Volumes/SSDRIVE/XP.GIT.REPOS/git4github/totoritko/libacfutils/geographiclib/geographiclib-mac-64/include/GeographicLib'
/usr/local/bin/ginstall -c -m 644 ../../GeographicLib-1.51/include/GeographicLib/Accumulator.hpp ../../GeographicLib-1.51/include/GeographicLib/AlbersEqualArea.hpp ../../GeographicLib-1.51/include/GeographicLib/AzimuthalEquidistant.hpp ../../GeographicLib-1.51/include/GeographicLib/CassiniSoldner.hpp ../../GeographicLib-1.51/include/GeographicLib/CircularEngine.hpp ../../GeographicLib-1.51/include/GeographicLib/Constants.hpp ../../GeographicLib-1.51/include/GeographicLib/DMS.hpp ../../GeographicLib-1.51/include/GeographicLib/Ellipsoid.hpp ../../GeographicLib-1.51/include/GeographicLib/EllipticFunction.hpp ../../GeographicLib-1.51/include/GeographicLib/GARS.hpp ../../GeographicLib-1.51/include/GeographicLib/GeoCoords.hpp ../../GeographicLib-1.51/include/GeographicLib/Geocentric.hpp ../../GeographicLib-1.51/include/GeographicLib/Geodesic.hpp ../../GeographicLib-1.51/include/GeographicLib/GeodesicExact.hpp ../../GeographicLib-1.51/include/GeographicLib/GeodesicLine.hpp ../../GeographicLib-1.51/include/GeographicLib/GeodesicLineExact.hpp ../../GeographicLib-1.51/include/GeographicLib/Geohash.hpp ../../GeographicLib-1.51/include/GeographicLib/Geoid.hpp ../../GeographicLib-1.51/include/GeographicLib/Georef.hpp ../../GeographicLib-1.51/include/GeographicLib/Gnomonic.hpp ../../GeographicLib-1.51/include/GeographicLib/GravityCircle.hpp ../../GeographicLib-1.51/include/GeographicLib/GravityModel.hpp ../../GeographicLib-1.51/include/GeographicLib/LambertConformalConic.hpp ../../GeographicLib-1.51/include/GeographicLib/LocalCartesian.hpp ../../GeographicLib-1.51/include/GeographicLib/MGRS.hpp ../../GeographicLib-1.51/include/GeographicLib/MagneticCircle.hpp ../../GeographicLib-1.51/include/GeographicLib/MagneticModel.hpp ../../GeographicLib-1.51/include/GeographicLib/Math.hpp ../../GeographicLib-1.51/include/GeographicLib/NearestNeighbor.hpp ../../GeographicLib-1.51/include/GeographicLib/NormalGravity.hpp ../../GeographicLib-1.51/include/GeographicLib/OSGB.hpp ../../GeographicLib-1.51/include/GeographicLib/PolarStereographic.hpp ../../GeographicLib-1.51/include/GeographicLib/PolygonArea.hpp ../../GeographicLib-1.51/include/GeographicLib/Rhumb.hpp ../../GeographicLib-1.51/include/GeographicLib/SphericalEngine.hpp ../../GeographicLib-1.51/include/GeographicLib/SphericalHarmonic.hpp ../../GeographicLib-1.51/include/GeographicLib/SphericalHarmonic1.hpp ../../GeographicLib-1.51/include/GeographicLib/SphericalHarmonic2.hpp ../../GeographicLib-1.51/include/GeographicLib/TransverseMercator.hpp ../../GeographicLib-1.51/include/GeographicLib/TransverseMercatorExact.hpp '/Volumes/SSDRIVE/XP.GIT.REPOS/git4github/totoritko/libacfutils/geographiclib/geographiclib-mac-64/include/GeographicLib'
/usr/local/bin/gmkdir -p '/Volumes/SSDRIVE/XP.GIT.REPOS/git4github/totoritko/libacfutils/geographiclib/geographiclib-mac-64/include/GeographicLib'
/usr/local/bin/ginstall -c -m 644 ../../GeographicLib-1.51/include/GeographicLib/UTMUPS.hpp ../../GeographicLib-1.51/include/GeographicLib/Utility.hpp GeographicLib/Config.h '/Volumes/SSDRIVE/XP.GIT.REPOS/git4github/totoritko/libacfutils/geographiclib/geographiclib-mac-64/include/GeographicLib'
ginstall: 'GeographicLib/Config.h' and '/Volumes/SSDRIVE/XP.GIT.REPOS/git4github/totoritko/libacfutils/geographiclib/geographiclib-mac-64/include/GeographicLib/Config.h' are the same file
make[2]: *** [install-nobase_includeHEADERS] Error 1
make[1]: *** [install-am] Error 2
make: *** [install-recursive] Error 1
widget.c : font_face not initialized. When calling tt_render_cb() .. crashing on Linux
tt_render_cb() .. crashing on Linux and may not crash by chance on other platform
tooltip_set_new_native(XPLMWindowID window) is not initializing tts->font_face.
cairo_set_font_face(cr, tts->font_face) will crash if unluckily tts->font_face is not null
proposal :
`tooltip_set_t *
tooltip_set_new_native(XPLMWindowID window)
{
int left, top, right, bottom;
cairo_text_extents_t te;
tooltip_set_t *tts = safe_malloc(sizeof (*tts));
tts->window = window;
list_create(&tts->tooltips, sizeof (tooltip_t),
offsetof(tooltip_t, node));
list_insert_tail(&tooltip_sets, tts);
XPLMGetWindowGeometry(window, &left, &top, &right, &bottom);
tts->orig_w = right - left;
tts->orig_h = top - bottom;
tts->display_delay = DEFAULT_DISPLAY_DELAY;
tts->surf = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 1, 1);
tts->cr = cairo_create(tts->surf);
tts->font_size = TT_FONT_SIZE;
tts->font_face = NULL; <--- NULL = default font face
cairo_set_font_size(tts->cr, tts->font_size);
memcpy(tts->bg_color, (double[4]){TT_BACKGROUND_RGBA},
sizeof (tts->bg_color));
cairo_text_extents(tts->cr, "X", &te);
tts->line_height = te.height * TT_LINE_HEIGHT_MULT;
return (tts);
}
`
Bulid errors mingw
Hi,
there are few build errors that bug me and I will appreciate some help :)
First when running build_deps there is error about geographiclib
/usr/bin/install: 'GeographicLib/Config.h' and '/home/todir/Downloads/GitHub/libacfutils/geographiclib/geographiclib-win-64/include/GeographicLib/Config.h' are the same file
make[2]: *** [Makefile:406: install-nobase_includeHEADERS] Error 1
make[2]: Leaving directory '/home/todir/Downloads/GitHub/libacfutils/geographiclib/geographiclib-win-64/include'
make[1]: *** [Makefile:527: install-am] Error 2
make[1]: Leaving directory '/home/todir/Downloads/GitHub/libacfutils/geographiclib/geographiclib-win-64/include'
make: *** [Makefile:484: install-recursive] Error 1
then when running build_redist there are 2 errors
The first one is that mingw can not find <fontconfig/fontconfig.h> and as expected it is not in /usr/x86_64-w64-mingw32/include folder. Copying the one from usr/include fixes that, but I think it is wrong to do it that way. Any idea how to fix it?
The second one is:
In file included from ../src/acfutils/types.h:26,
from ../src/acfutils/sysmacros.h:33,
from ../src/acfutils/log.h:24,
from ../src/acfutils/assert.h:32,
from ../src/mt_cairo_render.c:35:
../src/acfutils/core.h:44:25: error: redefinition of ‘struct __libacfutils_stat’
44 | #define ACFSYM(__sym__) __libacfutils_ ## __sym__
| ^~~~~~~~~~~~~~
../src/acfutils/core.h:44:25: note: originally defined here
44 | #define ACFSYM(__sym__) __libacfutils_ ## __sym__
| ^~~~~~~~~~~~~~
../src/acfutils/core.h:44:25: note: in definition of macro ‘ACFSYM’
44 | #define ACFSYM(__sym__) __libacfutils_ ## __sym__
| ^~~~~~~~~~~~~~
../src/acfutils/helpers.h:472:8: note: in expansion of macro ‘stat’
472 | struct stat {
| ^~~~
../src/acfutils/core.h:44:25: error: conflicting types for ‘__libacfutils_stat’
44 | #define ACFSYM(__sym__) __libacfutils_ ## __sym__
| ^~~~~~~~~~~~~~
../src/acfutils/core.h:44:25: note: previous declaration of ‘__libacfutils_stat’ was here
44 | #define ACFSYM(__sym__) __libacfutils_ ## __sym__
| ^~~~~~~~~~~~~~
../src/acfutils/core.h:44:25: note: in definition of macro ‘ACFSYM’
44 | #define ACFSYM(__sym__) __libacfutils_ ## __sym__
| ^~~~~~~~~~~~~~
../src/acfutils/helpers.h:477:16: note: in expansion of macro ‘stat’
477 | API_EXPORT int stat(const char *pathname, struct stat *buf);
| ^~~~
make[1]: *** [Makefile.Debug:1123: debug/mt_cairo_render.o] Error 1
make[1]: *** Waiting for unfinished jobs....
make[1]: Leaving directory '/home/todir/Downloads/GitHub/libacfutils/qmake'
make: *** [Makefile:45: debug] Error 2
Those errors are for mingw only. It compiles fine for linux only with build-win-lin -l
I am on ubuntu 21.04 with mingw gcc version 10-win32 20210408 (GCC)
As of xp 12.05 ramp starts may have a negative heading
... e.g. EDDS Pos 44 and airportdb.c/parse_apt_dat_1300_line refuses them with a test "is_valid_hdg" .
conf.c: conf_write() returns FALSE if conf_write_impl() returns 0 which is a successful value
Proposal below :
bool_t conf_write(const conf_t *conf, FILE *fp) { return (conf_write_impl(conf, fp, 0, B_FALSE, B_FALSE) >= 0); }
Libxml build error
On both the Windows and Linux builds.
../libxml2-2.9.4/runtest.c: In function ‘streamProcessTest’:
../libxml2-2.9.4/runtest.c:2145:65: warning: unused parameter ‘options’ [-Wunused-parameter]
2145 | xmlTextReaderPtr reader, const char *rng, int options) {
| ~~~~^~~~~~~
CC testlimits.o
sed -e 's?@XML_LIBDIR@?-L/media/Data/Git_Repos/libacfutils/libxml2/libxml2-linux-64/lib?g'
-e 's?@XML_INCLUDEDIR@?-I/media/Data/Git_Repos/libacfutils/libxml2/libxml2-linux-64/include/libxml2?g'
-e 's?@Version@?2.9.4?g'
-e 's?@XML_LIBS@?-lxml2 -lm ?g'
< ../libxml2-2.9.4/xml2Conf.sh.in > xml2Conf.tmp
&& mv xml2Conf.tmp xml2Conf.sh
CCLD testdso.la
CC testapi.o
cc1: fatal error: testapi.c: No such file or directory
compilation terminated.
Newer versions from Github do not build either because the do not come with a configure script/file.
OS: Arch Linux
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.