void DisplayChannel::handle_stream_clip(RedPeer::InMessage* message) { SpiceMsgDisplayStreamClip* clip_data = (SpiceMsgDisplayStreamClip*)message->data(); VideoStream* stream; uint32_t num_clip_rects; SpiceRect* clip_rects; if (clip_data->id >= _streams.size() || !(stream = _streams[clip_data->id])) { THROW("invalid stream"); } if (message->size() < sizeof(SpiceMsgDisplayStreamClip)) { THROW("access violation"); } set_clip_rects(clip_data->clip, num_clip_rects, clip_rects); Lock lock(_streams_lock); stream->set_clip(clip_data->clip.type, num_clip_rects, clip_rects); }