~ubuntu-branches/ubuntu/vivid/mir/vivid

« back to all changes in this revision

Viewing changes to src/server/frontend/resource_cache.h

  • Committer: Package Import Robot
  • Author(s): Ubuntu daily release, Daniel van Vugt, Ubuntu daily release
  • Date: 2014-08-29 16:12:54 UTC
  • mfrom: (1.1.73)
  • Revision ID: package-import@ubuntu.com-20140829161254-wfnunk4fw3msth3c
Tags: 0.7.0+14.10.20140829-0ubuntu1
[ Daniel van Vugt ]
* New upstream release 0.7.0 (https://launchpad.net/mir/+milestone/0.7.0)
  - Enhancements:
    . Test suite: Reworked mechanism to override Mir client functions
    . Demo shell: Detect custom rendering (decorations) to make it
      compatible with overlay optimizations
    . Make sure to preserve fd resources until the end of the sending
      of the message
    . Add test cases and script for tracking changes to the new ABIs:
      libmircommon, libmirplatform
    . Symbols file for libmirplatform
    . Symbols file for libmircommon
    . Symbols file for libmirserver
    . Various improvements to the SessionMediator test
    . Various build related improvements
    . Print testcase output during package build
    . Abort test when InProcessServer startup fails
    . Link the integration and unit tests against the server objects
    . Add a document detailing the useful tests to run and the useful
      logs to collect when troubleshooting a new android chipset
    . Enable motion event resampling and prediction for a more responsive
      touch experience.
  - ABI summary: Servers need rebuilding, but clients do not
    . Mirclient ABI unchanged at 8
    . Mircommon ABI bumped to 1
    . Mirplatform ABI bumped to 2
    . Mirserver ABI bumped to 25
  - API changes
    . Deleted function - frontend::Shell::create_surface_for(). If you have
      the std::shared_ptr<frontend::Session> session, you can just do
      session->create_surface(params) instead to get a SurfaceId
  - Bug fixes:
    . Ensure we process lifecycle events before the nested server is torn
      down (LP: #1353465)
    . Fix race in InputTestingServerConfiguration (LP: #1354446)
    . Fix fd leaks in prompt session frontend code and tests (LP: #1353461)
    . Detect the additional things the demo shell draws on the renderable
      list and avoid calling the optimized post function if they are being
      drawn (LP: #1348330)
    . Client: Fix SIGTERM dispatch in our default lifecycle event handler
      (LP: #1353867)
    . DemoRenderer: Don't try to create a texture of width zero. 
      (LP: #1358210)
    . Fix CI failures (LP: #1358698)
    . Fix build failure: "variable ‘rc’ set but not used" which happens in
      release mode when NDEBUG is set (LP: #1358625)
    . Only enumerate exposed input surfaces to avoid delivering events to
      occluded surfaces (LP: #1359264)
    . Android: do not post driver cancelled buffers (LP: #1359406)
    . Client: Ensure our platform library stays loaded for as long as it is
      needed by other objects (LP: #1358191)
    . Examples: Register the DemoCompositor with the Scene to properly
      process visibility events (LP: #1359487)
    . Mir_demo_client_basic: Don't assert on user errors like failing to
      connect to a Mir server (LP: #1331958)
    . Tests: Explicitly depend on GMock target to avoid build races
      (LP: #1362646)

[ Ubuntu daily release ]
* New rebuild forced

Show diffs side-by-side

added added

removed removed

Lines of Context:
20
20
#define MIR_FRONTEND_RESOURCE_CACHE_H_
21
21
 
22
22
#include "mir_protobuf.pb.h"
 
23
#include "mir/fd.h"
23
24
 
24
25
#include <map>
25
26
#include <memory>
30
31
namespace frontend
31
32
{
32
33
 
 
34
class MessageResourceCache
 
35
{
 
36
public:
 
37
    virtual void save_resource(google::protobuf::Message* key, std::shared_ptr<void> const& value) = 0;
 
38
    virtual void free_resource(google::protobuf::Message* key) = 0;
 
39
    virtual void save_fd(google::protobuf::Message* key, Fd const& fd) = 0;
 
40
 
 
41
    virtual ~MessageResourceCache() = default;
 
42
    MessageResourceCache() = default;
 
43
    MessageResourceCache(MessageResourceCache const&) = delete;
 
44
    MessageResourceCache& operator=(MessageResourceCache const&) = delete;
 
45
};
 
46
 
33
47
// Used to save resources that must be retained until a call completes.
34
 
class ResourceCache
 
48
class ResourceCache : public MessageResourceCache
35
49
{
36
50
public:
37
51
    void save_resource(google::protobuf::Message* key, std::shared_ptr<void> const& value);
38
 
 
 
52
    void save_fd(google::protobuf::Message* key, Fd const& fd);
39
53
    void free_resource(google::protobuf::Message* key);
40
54
 
41
55
private:
42
56
    typedef std::map<google::protobuf::Message*, std::shared_ptr<void>> Resources;
 
57
    typedef std::multimap<google::protobuf::Message*, mir::Fd> FdResources;
43
58
 
44
59
    std::mutex guard;
45
60
    Resources resources;
 
61
    FdResources fd_resources;
46
62
};
47
63
 
48
64
}