| Index: core/cross/texture_base.cc
|
| ===================================================================
|
| --- core/cross/texture_base.cc (revision 66674)
|
| +++ core/cross/texture_base.cc (working copy)
|
| @@ -33,8 +33,10 @@
|
| // This file contains the definition of the Texture class.
|
|
|
| #include "core/cross/texture_base.h"
|
| +
|
| +#include "core/cross/bitmap.h"
|
| #include "core/cross/pack.h"
|
| -#include "core/cross/bitmap.h"
|
| +#include "core/cross/renderer.h"
|
|
|
| namespace o3d {
|
|
|
| @@ -49,14 +51,36 @@
|
| int levels,
|
| bool enable_render_surfaces)
|
| : ParamObject(service_locator),
|
| + renderer_(service_locator->GetService<Renderer>()),
|
| alpha_is_one_(false),
|
| format_(format),
|
| weak_pointer_manager_(this),
|
| - render_surfaces_enabled_(enable_render_surfaces) {
|
| + render_surfaces_enabled_(enable_render_surfaces),
|
| + has_unrendered_update_(false),
|
| + last_render_frame_count_(0),
|
| + update_count_(0),
|
| + render_count_(0) {
|
| RegisterReadOnlyParamRef(kLevelsParamName, &levels_param_);
|
| levels_param_->set_read_only_value(levels);
|
| }
|
|
|
| +void Texture::TextureUpdated() {
|
| + CheckLastTextureUpdateRendered();
|
| + last_render_frame_count_ = renderer_->render_frame_count();
|
| + update_count_++;
|
| + has_unrendered_update_ = true;
|
| +}
|
| +
|
| +void Texture::CheckLastTextureUpdateRendered() {
|
| + if (has_unrendered_update_ &&
|
| + renderer_->render_frame_count() != last_render_frame_count_) {
|
| + // Then a new frame has been rendered to the screen since we last
|
| + // updated this texture, so that update has been rendered to the screen.
|
| + render_count_++;
|
| + has_unrendered_update_ = false;
|
| + }
|
| +}
|
| +
|
| ObjectBase::Ref ParamTexture::Create(ServiceLocator* service_locator) {
|
| return ObjectBase::Ref(new ParamTexture(service_locator, false, false));
|
| }
|
|
|