Skip to content

Commit 5dd861e

Browse files
committed
GIL when calling potentially-blocking functions
minoki@44feff5
1 parent 8aad19d commit 5dd861e

File tree

1 file changed

+7
-0
lines changed

1 file changed

+7
-0
lines changed

src/main.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -349,6 +349,7 @@ PYBIND11_MODULE(NDIlib, m) {
349349
[](py::capsule instance, uint32_t timeout_in_ms) {
350350
auto p_instance =
351351
static_cast<NDIlib_find_instance_type *>(instance.get_pointer());
352+
py::gil_scoped_release release;
352353
return NDIlib_find_wait_for_sources(p_instance, timeout_in_ms);
353354
},
354355
py::arg("instance"), py::arg("timeout_in_ms"));
@@ -458,6 +459,7 @@ PYBIND11_MODULE(NDIlib, m) {
458459
[](py::capsule instance, uint32_t timeout_in_ms) {
459460
auto p_instance =
460461
static_cast<NDIlib_recv_instance_type *>(instance.get_pointer());
462+
py::gil_scoped_release release;
461463
NDIlib_video_frame_v2_t video_frame;
462464
NDIlib_audio_frame_v2_t audio_frame;
463465
NDIlib_metadata_frame_t metadata_frame;
@@ -475,6 +477,7 @@ PYBIND11_MODULE(NDIlib, m) {
475477
[](py::capsule instance, uint32_t timeout_in_ms) {
476478
auto p_instance =
477479
static_cast<NDIlib_recv_instance_type *>(instance.get_pointer());
480+
py::gil_scoped_release release;
478481
NDIlib_video_frame_v2_t video_frame;
479482
NDIlib_audio_frame_v3_t audio_frame;
480483
NDIlib_metadata_frame_t metadata_frame;
@@ -963,6 +966,7 @@ PYBIND11_MODULE(NDIlib, m) {
963966
uint32_t timeout_in_ms) {
964967
auto p_instance =
965968
static_cast<NDIlib_send_instance_type *>(instance.get_pointer());
969+
py::gil_scoped_release release;
966970
NDIlib_send_capture(p_instance, p_metadata, timeout_in_ms);
967971
},
968972
py::arg("instance"), py::arg("metadata"), py::arg("timeout_in_ms"));
@@ -982,6 +986,7 @@ PYBIND11_MODULE(NDIlib, m) {
982986
uint32_t timeout_in_ms) {
983987
auto p_instance =
984988
static_cast<NDIlib_send_instance_type *>(instance.get_pointer());
989+
py::gil_scoped_release release;
985990
return NDIlib_send_get_tally(p_instance, p_tally, timeout_in_ms);
986991
},
987992
py::arg("instance"), py::arg("tally"), py::arg("timeout_in_ms"));
@@ -991,6 +996,7 @@ PYBIND11_MODULE(NDIlib, m) {
991996
[](py::capsule instance, uint32_t timeout_in_ms) {
992997
auto p_instance =
993998
static_cast<NDIlib_send_instance_type *>(instance.get_pointer());
999+
py::gil_scoped_release release;
9941000
return NDIlib_send_get_no_connections(p_instance, timeout_in_ms);
9951001
},
9961002
py::arg("instance"), py::arg("timeout_in_ms"));
@@ -1104,6 +1110,7 @@ PYBIND11_MODULE(NDIlib, m) {
11041110
[](py::capsule instance, uint32_t timeout_in_ms) {
11051111
auto p_instance =
11061112
static_cast<NDIlib_routing_instance_type *>(instance.get_pointer());
1113+
py::gil_scoped_release release;
11071114
return NDIlib_routing_get_no_connections(p_instance, timeout_in_ms);
11081115
},
11091116
py::arg("instance"), py::arg("timeout_in_ms"));

0 commit comments

Comments
 (0)