1dd743fefad9764ad86d7f69deec32e9a3b5de47frobertphillips@google.com
2dd743fefad9764ad86d7f69deec32e9a3b5de47frobertphillips@google.com/*
3dd743fefad9764ad86d7f69deec32e9a3b5de47frobertphillips@google.com * Copyright 2012 Google Inc.
4dd743fefad9764ad86d7f69deec32e9a3b5de47frobertphillips@google.com *
5dd743fefad9764ad86d7f69deec32e9a3b5de47frobertphillips@google.com * Use of this source code is governed by a BSD-style license that can be
6dd743fefad9764ad86d7f69deec32e9a3b5de47frobertphillips@google.com * found in the LICENSE file.
7dd743fefad9764ad86d7f69deec32e9a3b5de47frobertphillips@google.com */
8dd743fefad9764ad86d7f69deec32e9a3b5de47frobertphillips@google.com
9dd743fefad9764ad86d7f69deec32e9a3b5de47frobertphillips@google.com#include "GrBufferObj.h"
100dd84a399ae8903784eac1c361c08449f822307frobertphillips@google.com
11ae6b777ba6d37b5330cdadc15ccff796fe172ca2robertphillips@google.comvoid GrBufferObj::allocate(GrGLsizeiptr size, const GrGLchar *dataPtr) {
120dd84a399ae8903784eac1c361c08449f822307frobertphillips@google.com    GrAlwaysAssert(size >= 0);
130dd84a399ae8903784eac1c361c08449f822307frobertphillips@google.com
140dd84a399ae8903784eac1c361c08449f822307frobertphillips@google.com    // delete pre-existing data
150dd84a399ae8903784eac1c361c08449f822307frobertphillips@google.com    delete[] fDataPtr;
160dd84a399ae8903784eac1c361c08449f822307frobertphillips@google.com
170dd84a399ae8903784eac1c361c08449f822307frobertphillips@google.com    fSize = size;
180dd84a399ae8903784eac1c361c08449f822307frobertphillips@google.com    fDataPtr = new GrGLchar[size];
190dd84a399ae8903784eac1c361c08449f822307frobertphillips@google.com    if (dataPtr) {
200dd84a399ae8903784eac1c361c08449f822307frobertphillips@google.com        memcpy(fDataPtr, dataPtr, fSize);
210dd84a399ae8903784eac1c361c08449f822307frobertphillips@google.com    }
220dd84a399ae8903784eac1c361c08449f822307frobertphillips@google.com    // TODO: w/ no dataPtr the data is unitialized - this could be tracked
230dd84a399ae8903784eac1c361c08449f822307frobertphillips@google.com}
240dd84a399ae8903784eac1c361c08449f822307frobertphillips@google.com
250dd84a399ae8903784eac1c361c08449f822307frobertphillips@google.comvoid GrBufferObj::deleteAction() {
260dd84a399ae8903784eac1c361c08449f822307frobertphillips@google.com
270dd84a399ae8903784eac1c361c08449f822307frobertphillips@google.com    // buffers are automatically unmapped when deleted
280dd84a399ae8903784eac1c361c08449f822307frobertphillips@google.com    this->resetMapped();
290dd84a399ae8903784eac1c361c08449f822307frobertphillips@google.com
300dd84a399ae8903784eac1c361c08449f822307frobertphillips@google.com    this->INHERITED::deleteAction();
310dd84a399ae8903784eac1c361c08449f822307frobertphillips@google.com}
32