There is a potential data race problem between the ResultMsg::NewFrame and new_frame_ready() notification in snapshot use case. The ResultMsg::NewFrame uses webrender channel, but the new_frame_ready() uses rendererThread::loop() directly. So, we can't make sure the new_frame_ready() notification is always after ResultMsg::NewFrame. Then, the snapshot result is unpredictable.
Created attachment 8834759 [details] renderer thread.pdf Sorry, I misunderstand the meaning of webrender channel. Here is a diagram to show that. The "new frame" will be processed before the rendering call. So, it's no problem here.