void BKE_frameserver_end(void) { if (connsock != -1) { closesocket(connsock); connsock = -1; } closesocket(sock); shutdown_socket_system(); }
int BKE_frameserver_start(void *context_v, struct Scene *scene, RenderData *UNUSED(rd), int rectx, int recty, ReportList *reports, bool UNUSED(preview), const char *UNUSED(suffix)) { struct sockaddr_in addr; int arg = 1; FrameserverContext *context = context_v; (void)scene; /* unused */ if (!startup_socket_system()) { BKE_report(reports, RPT_ERROR, "Cannot startup socket system"); return 0; } if ((context->sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) { shutdown_socket_system(); BKE_report(reports, RPT_ERROR, "Cannot open socket"); return 0; } setsockopt(context->sock, SOL_SOCKET, SO_REUSEADDR, (char *) &arg, sizeof(arg)); addr.sin_family = AF_INET; addr.sin_port = htons(U.frameserverport); addr.sin_addr.s_addr = INADDR_ANY; if (bind(context->sock, (struct sockaddr *)&addr, sizeof(addr)) < 0) { shutdown_socket_system(); BKE_report(reports, RPT_ERROR, "Cannot bind to socket"); return 0; } if (listen(context->sock, SOMAXCONN) < 0) { shutdown_socket_system(); BKE_report(reports, RPT_ERROR, "Cannot establish listen backlog"); return 0; } context->connsock = -1; context->render_width = rectx; context->render_height = recty; return 1; }
void BKE_frameserver_end(void *context_v) { FrameserverContext *context = context_v; if (context->connsock != -1) { closesocket(context->connsock); context->connsock = -1; } closesocket(context->sock); shutdown_socket_system(); }