summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrediano Ziglio <freddy77@gmail.com>2021-05-31 20:23:38 +0100
committerFrediano Ziglio <freddy77@gmail.com>2023-11-22 07:39:19 +0000
commit7db44ba27055f81801734f5e2026e443a5f54a5f (patch)
tree00130df7fbc3ac568ba97417b9b4e55ffb9be29c
parent0cd85544e14c3427c8c01f5075f760cc31d02cc6 (diff)
more on ring... protect all functions
they were a bit weird TODO: use static helpers ??
-rw-r--r--server/ring.hpp10
-rw-r--r--server/video-stream.cpp6
2 files changed, 12 insertions, 4 deletions
diff --git a/server/ring.hpp b/server/ring.hpp
index c9e0f16c..6988d43b 100644
--- a/server/ring.hpp
+++ b/server/ring.hpp
@@ -15,6 +15,7 @@ public:
remove();
}
+private:
/**
* Tell if this item is in a Ring
*/
@@ -34,7 +35,6 @@ public:
prev = next = nullptr;
}
}
-private:
friend struct Ring<T, n>;
RingItem *next = nullptr;
RingItem *prev = nullptr;
@@ -84,6 +84,14 @@ struct Ring
pos->RingItem<T,n>::remove();
return iterator(next->to_contained());
}
+ void remove(T *item)
+ {
+ item->remove();
+ }
+ bool is_linked(const T *item) const
+ {
+ return item->is_linked();
+ }
private:
RingItem<T, n> link;
};
diff --git a/server/video-stream.cpp b/server/video-stream.cpp
index b9859a7c..f818e416 100644
--- a/server/video-stream.cpp
+++ b/server/video-stream.cpp
@@ -93,7 +93,7 @@ void video_stream_stop(DisplayChannel *display, VideoStream *stream)
DisplayChannelClient *dcc;
int stream_id = display_channel_get_video_stream_id(display, stream);
- spice_return_if_fail(stream->is_linked());
+ spice_return_if_fail(display->priv->streams.is_linked(stream));
spice_return_if_fail(!stream->current);
spice_debug("stream %d", stream_id);
@@ -117,7 +117,7 @@ void video_stream_stop(DisplayChannel *display, VideoStream *stream)
video_stream_agent_stats_print(stream_agent);
}
display->priv->streams_size_total -= stream->width * stream->height;
- stream->remove();
+ display->priv->streams.remove(stream);
video_stream_unref(display, stream);
}
@@ -140,7 +140,7 @@ void video_stream_unref(DisplayChannel *display, VideoStream *stream)
if (--stream->refs != 0)
return;
- spice_warn_if_fail(!stream->is_linked());
+ spice_warn_if_fail(!display->priv->streams.is_linked(stream));
video_stream_free(display, stream);
display->priv->stream_count--;