Squashed 'external/toxcore/c-toxcore/' changes from 1701691d5..640e6cace

640e6cace fix(toxav): remove extra copy of video frame on encode Tested and works, but there might be alignment issues and other stuff.
6f7f51554 chore(toxav): use realtime deadline for vp8 encoder Technically all this does is choose a quality based on frame duration, which we always set to 1, and as such is always realtime. (In same timebase as pts, which we use as a frame counter...)
5047ae5a2 chore: make the source tarball exhibit the old behavior
14804a4b8 chore: Fix sonar-scan CI action.
e2db7d946 cleanup: Exclude lan_discovery test from running on macos, instead of excluding it from the project.
3accade67 chore: Fix CI, disabling some tests that no longer run on CI.
ef8d767e6 cleanup: Fix comment formatting errors.
34ec822da cleanup: Fix some clang-19 format warnings.
40b3f0b46 refactor: Use clang's nullability qualifiers instead of attributes.
f81e30679 refactor: Use per-parameter nullability annotations.
REVERT: 1701691d5 chore(toxav): use realtime deadline for vp8 encoder Technically all this does is choose a quality based on frame duration, which we always set to 1, and as such is always realtime. (In same timebase as pts, which we use as a frame counter...)
REVERT: a87505867 fix(toxav): remove extra copy of video frame on encode Tested and works, but there might be alignment issues and other stuff.

git-subtree-dir: external/toxcore/c-toxcore
git-subtree-split: 640e6cace81b4412c45977b94eb9c41e53c54035
This commit is contained in:
Green Sky
2025-10-08 12:03:02 +02:00
parent ab12fbe820
commit 54c0a3c874
195 changed files with 3148 additions and 5495 deletions

View File

@@ -25,15 +25,18 @@ run() {
-Wno-missing-braces \
-Wno-missing-field-initializers \
-Wno-missing-noreturn \
-Wno-nullability-completeness \
-Wno-nullability-extension \
-Wno-nullable-to-nonnull-conversion \
-Wno-old-style-cast \
-Wno-padded \
-Wno-source-uses-openmp \
-Wno-switch-default \
-Wno-tautological-pointer-compare \
-Wno-unreachable-code-return \
-Wno-unsafe-buffer-usage \
-Wno-unused-parameter \
-Wno-used-but-marked-unused \
-Wno-source-uses-openmp
-Wno-used-but-marked-unused
}
. other/analysis/variants.sh

View File

@@ -7,6 +7,11 @@ ERRORS="*"
# Still good to occasionally look at.
ERRORS="$ERRORS,-google-readability-casting"
# TODO(iphydf): Fix these.
CHECKS="$CHECKS,-clang-analyzer-nullability.NullableDereferenced"
CHECKS="$CHECKS,-clang-analyzer-nullability.NullablePassedToNonnull"
CHECKS="$CHECKS,-clang-analyzer-nullability.NullPassedToNonnull"
# Need to investigate or disable and document these.
# =========================================================

View File

@@ -12,8 +12,12 @@ CPPCHECK+=("--check-level=exhaustive")
CPPCHECK+=("--inline-suppr")
CPPCHECK+=("--library=other/docker/cppcheck/toxcore.cfg")
CPPCHECK+=("--error-exitcode=1")
# Some files don't match all our suppressions below.
CPPCHECK+=("--suppress=unmatchedSuppression")
# We don't cast function pointers, which cppcheck suggests here.
CPPCHECK+=("--suppress=constParameterCallback")
# This disagrees with clang's warnings.
CPPCHECK+=("--suppress=invalidPrintfArgType_uint")
# False positives in switch statements.
CPPCHECK+=("--suppress=knownConditionTrueFalse")
# Cppcheck does not need standard library headers to get proper results.

View File

@@ -1,5 +1,5 @@
FROM toxchat/c-toxcore:sources AS sources
FROM ghcr.io/goblint/analyzer:latest
FROM ghcr.io/goblint/analyzer:2.5.0
RUN apt-get update && \
DEBIAN_FRONTEND="noninteractive" apt-get install -y --no-install-recommends \

View File

@@ -216,17 +216,6 @@ void generate_event_impl(const std::string& event_name, const std::vector<EventT
// gen setters and getters
for (const auto& t : event_types) {
// setter
std::visit(
overloaded{
[&](const EventTypeTrivial& t) {
f << "non_null()\n";
},
[&](const EventTypeByteRange& t) {
f << "non_null(1) nullable(2)\n";
}
},
t
);
f << "static " << (t.index() == 0 ? "void" : "bool") << " tox_event_" << event_name_l << "_set_";
std::visit(
overloaded{
@@ -239,15 +228,14 @@ void generate_event_impl(const std::string& event_name, const std::vector<EventT
},
t
);
f << "(Tox_Event_" << event_name << " *" << event_name_l << ",\n";
f << " ";
f << "(Tox_Event_" << event_name << " *_Nonnull " << event_name_l << ",";
std::visit(
overloaded{
[&](const EventTypeTrivial& t) {
f << t.type << " " << t.name << ")\n";
f << " " << t.type << " " << t.name << ")\n";
},
[&](const EventTypeByteRange& t) {
f << "const uint8_t *" << t.name_data << ", uint32_t " << t.name_length << ")\n";
f << "\n const uint8_t *_Nullable " << t.name_data << ", uint32_t " << t.name_length << ")\n";
}
},
t
@@ -259,7 +247,7 @@ void generate_event_impl(const std::string& event_name, const std::vector<EventT
f << " " << event_name_l << "->" << t.name << " = " << t.name << ";\n";
},
[&](const EventTypeByteRange& t) {
f << "\n if (" << event_name_l << "->" << t.name_data << " != nullptr) {\n";
f << " if (" << event_name_l << "->" << t.name_data << " != nullptr) {\n";
f << " free(" << event_name_l << "->" << t.name_data << ");\n";
f << " " << event_name_l << "->" << t.name_data << " = nullptr;\n";
f << " " << event_name_l << "->" << t.name_length << " = 0;\n";
@@ -308,16 +296,14 @@ void generate_event_impl(const std::string& event_name, const std::vector<EventT
// gen contruct
f << "non_null()\n";
f << "static void tox_event_" << event_name_l << "_construct(Tox_Event_" << event_name << " *" << event_name_l << ")\n{\n";
f << "static void tox_event_" << event_name_l << "_construct(Tox_Event_" << event_name << " *_Nonnull " << event_name_l << ")\n{\n";
// TODO: initialize all members properly
// TODO: check if _NONE is universal
// str_toupper(
f << " *" << event_name_l << " = (Tox_Event_" << event_name << ") {\n 0\n };\n}\n";
// gen destruct
f << "non_null()\n";
f << "static void tox_event_" << event_name_l << "_destruct(Tox_Event_" << event_name << " *" << event_name_l << ", const Memory *mem)\n{\n";
f << "static void tox_event_" << event_name_l << "_destruct(Tox_Event_" << event_name << " *_Nonnull " << event_name_l << ", const Memory *_Nonnull mem)\n{\n";
size_t data_count = 0;
for (const auto& t : event_types) {
std::visit(
@@ -375,9 +361,7 @@ void generate_event_impl(const std::string& event_name, const std::vector<EventT
f << ";\n}\n\n";
// unpack
f << "non_null()\n";
f << "static bool tox_event_" << event_name_l << "_unpack_into(\n";
f << " Tox_Event_" << event_name << " *event, Bin_Unpack *bu)\n{\n";
f << "static bool tox_event_" << event_name_l << "_unpack_into(Tox_Event_" << event_name << " *_Nonnull event, Bin_Unpack *_Nonnull bu)\n{\n";
f << " assert(event != nullptr);\n";
if (event_types.size() > 1) {
f << " if (!bin_unpack_array_fixed(bu, " << event_types.size() << ", nullptr)) {\n return false;\n }\n\n";
@@ -437,8 +421,7 @@ void generate_event_impl(const std::string& event_name, const std::vector<EventT
f << " mem_delete(mem, " << event_name_l << ");\n}\n\n";
// add
f << "non_null()\n";
f << "static Tox_Event_" << event_name << " *tox_events_add_" << event_name_l << "(Tox_Events *events, const Memory *mem)\n{\n";
f << "static Tox_Event_" << event_name << " *tox_events_add_" << event_name_l << "(Tox_Events *_Nonnull events, const Memory *_Nonnull mem)\n{\n";
f << " Tox_Event_" << event_name << " *const " << event_name_l << " = tox_event_" << event_name_l << "_new(mem);\n\n";
f << " if (" << event_name_l << " == nullptr) {\n";
f << " return nullptr;\n }\n\n";
@@ -461,8 +444,7 @@ void generate_event_impl(const std::string& event_name, const std::vector<EventT
f << " return tox_event_" << event_name_l << "_unpack_into(*event, bu);\n}\n\n";
// alloc
f << "non_null()\n";
f << "static Tox_Event_" << event_name << " *tox_event_" << event_name_l << "_alloc(void *user_data)\n{\n";
f << "static Tox_Event_" << event_name << " *tox_event_" << event_name_l << "_alloc(void *_Nonnull user_data)\n{\n";
f << " Tox_Events_State *state = tox_events_alloc(user_data);\n";
f << " assert(state != nullptr);\n\n";
f << " if (state->events == nullptr) {\n return nullptr;\n }\n\n";

View File

@@ -46,7 +46,7 @@ static bool bootstrap_tox(Tox *tox)
free(key);
if (err != TOX_ERR_BOOTSTRAP_OK) {
printf("Failed to bootstrap. Error number: %d", err);
printf("Failed to bootstrap. Error number: %u", err);
return false;
}
@@ -128,13 +128,13 @@ int main(int argc, char *argv[])
tox_self_set_name(tox, name, strlen((const char *)name), &err);
if (err != TOX_ERR_SET_INFO_OK) {
printf("Failed to set name. Error number %d\n", err);
printf("Failed to set name. Error number %u\n", err);
}
tox_self_set_status_message(tox, (const uint8_t *)GENERATED_STATUS_MESSAGE, strlen(GENERATED_STATUS_MESSAGE), &err);
if (err != TOX_ERR_SET_INFO_OK) {
printf("Failed to set status. Error number: %d\n", err);
printf("Failed to set status. Error number: %u\n", err);
}
for (int i = 2; i < argc; i++) { //start at 2 because that is where the tox ids are
@@ -145,7 +145,7 @@ int main(int argc, char *argv[])
free(address);
if (friend_err != TOX_ERR_FRIEND_ADD_OK) {
printf("Failed to add friend number %d. Error number: %d\n", i - 1, friend_err);
printf("Failed to add friend number %d. Error number: %u\n", i - 1, friend_err);
}
}