~ubuntu-branches/ubuntu/wily/mir/wily-proposed

« back to all changes in this revision

Viewing changes to src/client/default_client_buffer_stream_factory.cpp

  • Committer: Package Import Robot
  • Author(s): CI Train Bot
  • Date: 2015-05-12 13:12:55 UTC
  • mto: This revision was merged to the branch mainline in revision 96.
  • Revision ID: package-import@ubuntu.com-20150512131255-y7z12i8n4pbvo70x
Tags: upstream-0.13.0+15.10.20150512
ImportĀ upstreamĀ versionĀ 0.13.0+15.10.20150512

Show diffs side-by-side

added added

removed removed

Lines of Context:
17
17
 */
18
18
#include "default_client_buffer_stream_factory.h"
19
19
#include "buffer_stream.h"
 
20
#include "perf_report.h"
 
21
#include "logging/perf_report.h"
 
22
#include "lttng/perf_report.h"
20
23
 
21
24
namespace mcl = mir::client;
22
25
namespace ml = mir::logging;
23
26
namespace mp = mir::protobuf;
24
27
 
25
 
mcl::DefaultClientBufferStreamFactory::DefaultClientBufferStreamFactory(std::shared_ptr<mcl::ClientBufferFactory> const& client_buffer_factory,
26
 
    std::shared_ptr<mcl::EGLNativeWindowFactory> const& native_window_factory,
 
28
namespace
 
29
{
 
30
 
 
31
std::shared_ptr<mcl::PerfReport>
 
32
make_perf_report(std::shared_ptr<ml::Logger> const& logger)
 
33
{
 
34
    // TODO: It seems strange that this directly uses getenv
 
35
    const char* report_target = getenv("MIR_CLIENT_PERF_REPORT");
 
36
    if (report_target && !strncmp(report_target, "log", strlen(report_target)))
 
37
    {
 
38
        return std::make_shared<mcl::logging::PerfReport>(logger);
 
39
    }
 
40
    else if (report_target && !strncmp(report_target, "lttng", strlen(report_target)))
 
41
    {
 
42
        return std::make_shared<mcl::lttng::PerfReport>();
 
43
    }
 
44
    else
 
45
    {
 
46
        return std::make_shared<mcl::NullPerfReport>();
 
47
    }
 
48
}
 
49
 
 
50
}
 
51
 
 
52
mcl::DefaultClientBufferStreamFactory::DefaultClientBufferStreamFactory(
 
53
    std::shared_ptr<mcl::ClientPlatform> const& client_platform,
27
54
    std::shared_ptr<ml::Logger> const& logger)
28
 
    : client_buffer_factory(client_buffer_factory),
29
 
      native_window_factory(native_window_factory),
 
55
    : client_platform(client_platform),
30
56
      logger(logger)
31
57
{
32
58
}
33
59
 
34
60
std::shared_ptr<mcl::ClientBufferStream> mcl::DefaultClientBufferStreamFactory::make_consumer_stream(mp::DisplayServer& server,
35
 
    mp::BufferStream const& protobuf_bs)
 
61
    mp::BufferStream const& protobuf_bs, std::string const& surface_name)
36
62
{
37
 
    return std::make_shared<mcl::BufferStream>(server, mcl::BufferStreamMode::Consumer, client_buffer_factory,
38
 
        native_window_factory, protobuf_bs, logger);
 
63
    return std::make_shared<mcl::BufferStream>(server, mcl::BufferStreamMode::Consumer, client_platform, protobuf_bs, make_perf_report(logger), surface_name);
39
64
}
40
65
 
41
66
std::shared_ptr<mcl::ClientBufferStream> mcl::DefaultClientBufferStreamFactory::make_producer_stream(mp::DisplayServer& server,
42
 
    mp::BufferStream const& protobuf_bs)
43
 
{
44
 
    return std::make_shared<mcl::BufferStream>(server, mcl::BufferStreamMode::Producer, client_buffer_factory,
45
 
        native_window_factory, protobuf_bs, logger);
 
67
    mp::BufferStream const& protobuf_bs, std::string const& surface_name)
 
68
{
 
69
    return std::make_shared<mcl::BufferStream>(server, mcl::BufferStreamMode::Producer, client_platform, protobuf_bs, make_perf_report(logger), surface_name);
 
70
}
 
71
 
 
72
 
 
73
mcl::ClientBufferStream* mcl::DefaultClientBufferStreamFactory::make_producer_stream(mp::DisplayServer& server,
 
74
    mp::BufferStreamParameters const& params, mir_buffer_stream_callback callback, void* context)
 
75
{
 
76
    return new mcl::BufferStream(server, client_platform, params, make_perf_report(logger), callback, context);
46
77
}