OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2013 Google Inc. All rights reserved. | 2 * Copyright (C) 2013 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 297 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
308 | 308 |
309 weakPointer->markContentsChanged(); | 309 weakPointer->markContentsChanged(); |
310 weakPointer->mailboxReleased(mailbox2); | 310 weakPointer->mailboxReleased(mailbox2); |
311 EXPECT_EQ(live, true); | 311 EXPECT_EQ(live, true); |
312 | 312 |
313 weakPointer->markContentsChanged(); | 313 weakPointer->markContentsChanged(); |
314 weakPointer->mailboxReleased(mailbox3); | 314 weakPointer->mailboxReleased(mailbox3); |
315 EXPECT_EQ(live, false); | 315 EXPECT_EQ(live, false); |
316 } | 316 } |
317 | 317 |
| 318 TEST_F(DrawingBufferTest, verifyDrawingBufferStaysAliveIfResourcesAreLost) |
| 319 { |
| 320 bool live = true; |
| 321 m_drawingBuffer->m_live = &live; |
| 322 blink::WebExternalTextureMailbox mailbox1; |
| 323 blink::WebExternalTextureMailbox mailbox2; |
| 324 blink::WebExternalTextureMailbox mailbox3; |
| 325 |
| 326 m_drawingBuffer->markContentsChanged(); |
| 327 EXPECT_TRUE(m_drawingBuffer->prepareMailbox(&mailbox1, 0)); |
| 328 m_drawingBuffer->markContentsChanged(); |
| 329 EXPECT_TRUE(m_drawingBuffer->prepareMailbox(&mailbox2, 0)); |
| 330 m_drawingBuffer->markContentsChanged(); |
| 331 EXPECT_TRUE(m_drawingBuffer->prepareMailbox(&mailbox3, 0)); |
| 332 |
| 333 m_drawingBuffer->markContentsChanged(); |
| 334 m_drawingBuffer->mailboxReleased(mailbox1, true); |
| 335 EXPECT_EQ(live, true); |
| 336 |
| 337 m_drawingBuffer->beginDestruction(); |
| 338 EXPECT_EQ(live, true); |
| 339 |
| 340 m_drawingBuffer->markContentsChanged(); |
| 341 m_drawingBuffer->mailboxReleased(mailbox2, false); |
| 342 EXPECT_EQ(live, true); |
| 343 |
| 344 DrawingBufferForTests* weakPtr = m_drawingBuffer.get(); |
| 345 m_drawingBuffer.clear(); |
| 346 EXPECT_EQ(live, true); |
| 347 |
| 348 weakPtr->markContentsChanged(); |
| 349 weakPtr->mailboxReleased(mailbox3, true); |
| 350 EXPECT_EQ(live, false); |
| 351 } |
| 352 |
318 class TextureMailboxWrapper { | 353 class TextureMailboxWrapper { |
319 public: | 354 public: |
320 explicit TextureMailboxWrapper(const blink::WebExternalTextureMailbox& mailb
ox) | 355 explicit TextureMailboxWrapper(const blink::WebExternalTextureMailbox& mailb
ox) |
321 : m_mailbox(mailbox) | 356 : m_mailbox(mailbox) |
322 { } | 357 { } |
323 | 358 |
324 bool operator==(const TextureMailboxWrapper& other) const | 359 bool operator==(const TextureMailboxWrapper& other) const |
325 { | 360 { |
326 return !memcmp(m_mailbox.name, other.m_mailbox.name, sizeof(m_mailbox.na
me)); | 361 return !memcmp(m_mailbox.name, other.m_mailbox.name, sizeof(m_mailbox.na
me)); |
327 } | 362 } |
(...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
618 } else { | 653 } else { |
619 EXPECT_EQ(0u, trackingContext->stencilAttachment()); | 654 EXPECT_EQ(0u, trackingContext->stencilAttachment()); |
620 EXPECT_EQ(0u, trackingContext->depthAttachment()); | 655 EXPECT_EQ(0u, trackingContext->depthAttachment()); |
621 } | 656 } |
622 | 657 |
623 drawingBuffer->beginDestruction(); | 658 drawingBuffer->beginDestruction(); |
624 } | 659 } |
625 } | 660 } |
626 | 661 |
627 } // namespace | 662 } // namespace |
OLD | NEW |