diff --git a/android/service/platform_api_stub.cpp b/android/service/platform_api_stub.cpp index 37fa5d4..4d351bd 100644 --- a/android/service/platform_api_stub.cpp +++ b/android/service/platform_api_stub.cpp @@ -99,7 +99,8 @@ void PlatformApiStub::update_application_list(const ApplicationListUpdate &updat *c = category; } - app->set_icon(a.icon.data(), a.icon.size()); + if (a.icon.size() > 0) + app->set_icon(a.icon.data(), a.icon.size()); } for (const auto &package : update.removed_applications) { diff --git a/android/service/platform_service.cpp b/android/service/platform_service.cpp index 0a19818..b390a0c 100644 --- a/android/service/platform_service.cpp +++ b/android/service/platform_service.cpp @@ -118,7 +118,14 @@ status_t PlatformService::update_application_list(const Parcel &data) { data.readByteVector(&p.icon); - update.applications.push_back(p); + // Send updates with icons separately to not overflow protobuf + if (p.icon.size() > 0) { + anbox::PlatformApiStub::ApplicationListUpdate with_icon_update; + with_icon_update.applications.push_back(p); + platform_api_stub_->update_application_list(with_icon_update); + } else { + update.applications.push_back(p); + } } const auto num_removed_packages = data.readInt32();