mirror of
https://github.com/sle118/squeezelite-esp32.git
synced 2025-12-09 13:07:03 +03:00
move some staks to external memory
This commit is contained in:
@@ -43,6 +43,8 @@
|
||||
#include "dmap_parser.h"
|
||||
#include "log_util.h"
|
||||
|
||||
#define RTSP_STACK_SIZE (8*1024)
|
||||
|
||||
typedef struct raop_ctx_s {
|
||||
#ifdef WIN32
|
||||
struct mdns_service *svc;
|
||||
@@ -57,6 +59,8 @@ typedef struct raop_ctx_s {
|
||||
pthread_t thread, search_thread;
|
||||
#else
|
||||
TaskHandle_t thread, search_thread, joiner;
|
||||
StaticTask_t *xTaskBuffer;
|
||||
StackType_t *xStack;
|
||||
#endif
|
||||
unsigned char mac[6];
|
||||
int latency;
|
||||
@@ -178,8 +182,14 @@ struct raop_ctx_s *raop_create(struct in_addr host, char *name,
|
||||
snprintf(id, 64, "%02X%02X%02X%02X%02X%02X@%s", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5], name);
|
||||
|
||||
#ifdef WIN32
|
||||
// seems that Windows snprintf does not add NULL char if actual size > max
|
||||
id[63] = '\0';
|
||||
// seems that Windows snprintf does not add NULL char if actual size > max
|
||||
id[63] = '\0';
|
||||
ctx->svc = mdnsd_register_svc(ctx->svr, id, "_raop._tcp.local", ctx->port, NULL, (const char**) txt);
|
||||
pthread_create(&ctx->thread, NULL, &rtsp_thread, ctx);
|
||||
|
||||
#else
|
||||
LOG_INFO("starting mDNS with %s", id);
|
||||
ESP_ERROR_CHECK( mdns_service_add(id, "_raop", "_tcp", ctx->port, txt, sizeof(txt) / sizeof(mdns_txt_item_t)) );
|
||||
|
||||
/*
|
||||
xTaskCreate((TaskFunction_t) rtsp_thread, "RTSP_thread", 8*1024, ctx, ESP_TASK_PRIO_MIN + 1, &ctx->thread);
|
||||
@@ -192,7 +202,11 @@ void raop_delete(struct raop_ctx_s *ctx) {
|
||||
return ctx;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------------*/
|
||||
void raop_delete(struct raop_ctx_s *ctx) {
|
||||
int sock;
|
||||
struct sockaddr addr;
|
||||
socklen_t nlen = sizeof(struct sockaddr);
|
||||
|
||||
if (!ctx) return;
|
||||
@@ -205,8 +219,9 @@ void raop_delete(struct raop_ctx_s *ctx) {
|
||||
|
||||
// wake-up thread by connecting socket, needed for freeBSD
|
||||
sock = socket(AF_INET, SOCK_STREAM, 0);
|
||||
getsockname(ctx->sock, (struct sockaddr *) &addr, &nlen);
|
||||
connect(sock, (struct sockaddr*) &addr, sizeof(addr));
|
||||
getsockname(ctx->sock, (struct sockaddr *) &addr, &nlen);
|
||||
connect(sock, (struct sockaddr*) &addr, sizeof(addr));
|
||||
closesocket(sock);
|
||||
|
||||
#ifdef WIN32
|
||||
pthread_join(ctx->thread, NULL);
|
||||
@@ -229,11 +244,13 @@ void raop_delete(struct raop_ctx_s *ctx) {
|
||||
// terminate search, but do not reclaim memory of pthread if never launched
|
||||
if (ctx->active_remote.handle) {
|
||||
close_mDNS(ctx->active_remote.handle);
|
||||
pthread_join(ctx->search_thread, NULL);
|
||||
pthread_join(ctx->search_thread, NULL);
|
||||
}
|
||||
*/
|
||||
|
||||
NFREE(ctx->rtsp.aeskey);
|
||||
NFREE(ctx->rtsp.aesiv);
|
||||
NFREE(ctx->rtsp.fmtp);
|
||||
|
||||
// stop broadcasting devices
|
||||
#ifdef WIN32
|
||||
|
||||
Reference in New Issue
Block a user