| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2009, Google Inc. | 2 * Copyright 2009, Google Inc. |
| 3 * All rights reserved. | 3 * All rights reserved. |
| 4 * | 4 * |
| 5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
| 6 * modification, are permitted provided that the following conditions are | 6 * modification, are permitted provided that the following conditions are |
| 7 * met: | 7 * met: |
| 8 * | 8 * |
| 9 * * Redistributions of source code must retain the above copyright | 9 * * Redistributions of source code must retain the above copyright |
| 10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
| (...skipping 473 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 484 Renderer* renderer = service_locator->GetService<Renderer>(); | 484 Renderer* renderer = service_locator->GetService<Renderer>(); |
| 485 if (NULL == renderer) { | 485 if (NULL == renderer) { |
| 486 O3D_ERROR(service_locator) << "No Render Device Available"; | 486 O3D_ERROR(service_locator) << "No Render Device Available"; |
| 487 return ObjectBase::Ref(); | 487 return ObjectBase::Ref(); |
| 488 } | 488 } |
| 489 return ObjectBase::Ref(renderer->CreateVertexBuffer()); | 489 return ObjectBase::Ref(renderer->CreateVertexBuffer()); |
| 490 } | 490 } |
| 491 | 491 |
| 492 SourceBuffer::SourceBuffer(ServiceLocator* service_locator) | 492 SourceBuffer::SourceBuffer(ServiceLocator* service_locator) |
| 493 : VertexBufferBase(service_locator), | 493 : VertexBufferBase(service_locator), |
| 494 buffer_(NULL) { | 494 buffer_() { |
| 495 } | 495 } |
| 496 | 496 |
| 497 SourceBuffer::~SourceBuffer() { | 497 SourceBuffer::~SourceBuffer() { |
| 498 ConcreteFree(); | 498 ConcreteFree(); |
| 499 } | 499 } |
| 500 | 500 |
| 501 void SourceBuffer::ConcreteFree() { | 501 void SourceBuffer::ConcreteFree() { |
| 502 if (buffer_) { | 502 buffer_.reset(); |
| 503 delete [] buffer_; | |
| 504 buffer_ = NULL; | |
| 505 } | |
| 506 } | 503 } |
| 507 | 504 |
| 508 bool SourceBuffer::ConcreteAllocate(size_t size_in_bytes) { | 505 bool SourceBuffer::ConcreteAllocate(size_t size_in_bytes) { |
| 509 ConcreteFree(); | 506 ConcreteFree(); |
| 510 | 507 |
| 511 buffer_ = new char[size_in_bytes]; | 508 buffer_.reset(new char[size_in_bytes]); |
| 512 | 509 |
| 513 return true; | 510 return true; |
| 514 } | 511 } |
| 515 | 512 |
| 516 bool SourceBuffer::ConcreteLock(AccessMode access_mode, void **buffer_data) { | 513 bool SourceBuffer::ConcreteLock(AccessMode access_mode, void **buffer_data) { |
| 517 if (!buffer_) { | 514 if (!buffer_.get()) { |
| 518 return false; | 515 return false; |
| 519 } | 516 } |
| 520 | 517 |
| 521 *buffer_data = reinterpret_cast<void*>(buffer_); | 518 *buffer_data = reinterpret_cast<void*>(buffer_.get()); |
| 522 return true; | 519 return true; |
| 523 } | 520 } |
| 524 | 521 |
| 525 bool SourceBuffer::ConcreteUnlock() { | 522 bool SourceBuffer::ConcreteUnlock() { |
| 526 return buffer_ != NULL; | 523 return buffer_.get() != NULL; |
| 527 } | 524 } |
| 528 | 525 |
| 529 ObjectBase::Ref SourceBuffer::Create(ServiceLocator* service_locator) { | 526 ObjectBase::Ref SourceBuffer::Create(ServiceLocator* service_locator) { |
| 530 return ObjectBase::Ref(new SourceBuffer(service_locator)); | 527 return ObjectBase::Ref(new SourceBuffer(service_locator)); |
| 531 } | 528 } |
| 532 | 529 |
| 533 Field* IndexBuffer::index_field() const { | 530 Field* IndexBuffer::index_field() const { |
| 534 // TODO: It does not make sense for an IndexBuffer to have more | 531 // TODO: It does not make sense for an IndexBuffer to have more |
| 535 // than one field. For example, we do not support any way of rendering a | 532 // than one field. For example, we do not support any way of rendering a |
| 536 // primitive using only one of the fields of an IndexBuffer. The API allows | 533 // primitive using only one of the fields of an IndexBuffer. The API allows |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 576 locked_ = buffer_->Lock(access_mode, &data_); | 573 locked_ = buffer_->Lock(access_mode, &data_); |
| 577 if (!locked_) { | 574 if (!locked_) { |
| 578 O3D_ERROR(buffer_->service_locator()) | 575 O3D_ERROR(buffer_->service_locator()) |
| 579 << "Unable to lock buffer '" << buffer_->name() << "'"; | 576 << "Unable to lock buffer '" << buffer_->name() << "'"; |
| 580 } | 577 } |
| 581 } | 578 } |
| 582 return data_; | 579 return data_; |
| 583 } | 580 } |
| 584 | 581 |
| 585 } // namespace o3d | 582 } // namespace o3d |
| OLD | NEW |