~alan-griffiths/mir/workaround-lp1602199

« back to all changes in this revision

Viewing changes to src/server/compositor/buffer_stream_surfaces.cpp

  • Committer: Tarmac
  • Author(s): Kevin DuBois
  • Date: 2016-05-03 09:49:54 UTC
  • mfrom: (3369.2.31 server-side-alloc)
  • Revision ID: tarmac-20160503094954-6l9jtr20mydxs3l7
server: Change point of frontend-facing buffer allocation from the mf::BufferStream to the msc::Session to prepare for NBS connection-allocated buffers.

We were previously allocating from the streams, but to accommodate mir_connection_allocate_buffer(), we will have to allocate via msc::Session.

This exposes mf::ClientBuffers(), as the streams need to reflect that buffers came from the same Session/connection. (cross-connection/cross-process mirclient-allocated-buffers are not supported). render_surfaces has an example of a 'floating' shell buffer stream that didn't originate from IPC.

Approved by mir-ci-bot, Cemil Azizoglu, Chris Halse Rogers.

Show diffs side-by-side

added added

removed removed

Lines of Context:
147
147
        observers.remove(o);
148
148
}
149
149
 
150
 
mg::BufferID mc::BufferStreamSurfaces::allocate_buffer(graphics::BufferProperties const&)
151
 
{
152
 
    BOOST_THROW_EXCEPTION(std::logic_error("buffer allocation cannot happen with an exchange-based buffer client"));
153
 
}
154
 
 
155
 
void mc::BufferStreamSurfaces::remove_buffer(graphics::BufferID)
156
 
{
157
 
    BOOST_THROW_EXCEPTION(std::logic_error("buffer removal cannot happen with an exchange-based buffer client"));
158
 
}
159
 
 
160
 
void mc::BufferStreamSurfaces::with_buffer(mg::BufferID, std::function<void(mg::Buffer&)> const&)
161
 
{
162
 
    BOOST_THROW_EXCEPTION(std::logic_error("buffer lookup cannot happen with an exchange-based buffer client"));
 
150
void mc::BufferStreamSurfaces::associate_buffer(graphics::BufferID)
 
151
{
 
152
}
 
153
 
 
154
void mc::BufferStreamSurfaces::disassociate_buffer(graphics::BufferID)
 
155
{
163
156
}
164
157
 
165
158
void mc::BufferStreamSurfaces::set_scale(float new_scale)