OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/common/cc_messages.h" | 5 #include "content/common/cc_messages.h" |
6 | 6 |
7 #include "cc/compositor_frame.h" | 7 #include "cc/compositor_frame.h" |
8 #include "content/public/common/common_param_traits.h" | 8 #include "content/public/common/common_param_traits.h" |
9 #include "third_party/WebKit/Source/Platform/chromium/public/WebData.h" | 9 #include "third_party/WebKit/Source/Platform/chromium/public/WebData.h" |
10 #include "third_party/WebKit/Source/Platform/chromium/public/WebFilterOperations
.h" | 10 #include "third_party/WebKit/Source/Platform/chromium/public/WebFilterOperations
.h" |
(...skipping 523 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
534 } | 534 } |
535 } | 535 } |
536 l->append("])"); | 536 l->append("])"); |
537 } | 537 } |
538 | 538 |
539 namespace { | 539 namespace { |
540 enum CompositorFrameType { | 540 enum CompositorFrameType { |
541 NO_FRAME, | 541 NO_FRAME, |
542 DELEGATED_FRAME, | 542 DELEGATED_FRAME, |
543 GL_FRAME, | 543 GL_FRAME, |
| 544 SOFTWARE_FRAME, |
544 }; | 545 }; |
545 } | 546 } |
546 | 547 |
547 void ParamTraits<cc::CompositorFrame>::Write(Message* m, | 548 void ParamTraits<cc::CompositorFrame>::Write(Message* m, |
548 const param_type& p) { | 549 const param_type& p) { |
549 WriteParam(m, p.metadata); | 550 WriteParam(m, p.metadata); |
550 if (p.delegated_frame_data) { | 551 if (p.delegated_frame_data) { |
551 DCHECK(!p.gl_frame_data); | 552 DCHECK(!p.gl_frame_data); |
| 553 DCHECK(!p.software_frame_data); |
552 WriteParam(m, static_cast<int>(DELEGATED_FRAME)); | 554 WriteParam(m, static_cast<int>(DELEGATED_FRAME)); |
553 WriteParam(m, *p.delegated_frame_data); | 555 WriteParam(m, *p.delegated_frame_data); |
554 } else if (p.gl_frame_data) { | 556 } else if (p.gl_frame_data) { |
| 557 DCHECK(!p.software_frame_data); |
555 WriteParam(m, static_cast<int>(GL_FRAME)); | 558 WriteParam(m, static_cast<int>(GL_FRAME)); |
556 WriteParam(m, *p.gl_frame_data); | 559 WriteParam(m, *p.gl_frame_data); |
| 560 } else if (p.software_frame_data) { |
| 561 WriteParam(m, static_cast<int>(SOFTWARE_FRAME)); |
| 562 WriteParam(m, *p.software_frame_data); |
557 } else { | 563 } else { |
558 WriteParam(m, static_cast<int>(NO_FRAME)); | 564 WriteParam(m, static_cast<int>(NO_FRAME)); |
559 } | 565 } |
560 } | 566 } |
561 | 567 |
562 bool ParamTraits<cc::CompositorFrame>::Read(const Message* m, | 568 bool ParamTraits<cc::CompositorFrame>::Read(const Message* m, |
563 PickleIterator* iter, | 569 PickleIterator* iter, |
564 param_type* p) { | 570 param_type* p) { |
565 if (!ReadParam(m, iter, &p->metadata)) | 571 if (!ReadParam(m, iter, &p->metadata)) |
566 return false; | 572 return false; |
567 | 573 |
568 int compositor_frame_type; | 574 int compositor_frame_type; |
569 if (!ReadParam(m, iter, &compositor_frame_type)) | 575 if (!ReadParam(m, iter, &compositor_frame_type)) |
570 return false; | 576 return false; |
571 | 577 |
572 switch (compositor_frame_type) { | 578 switch (compositor_frame_type) { |
573 case DELEGATED_FRAME: | 579 case DELEGATED_FRAME: |
574 p->delegated_frame_data.reset(new cc::DelegatedFrameData()); | 580 p->delegated_frame_data.reset(new cc::DelegatedFrameData()); |
575 if (!ReadParam(m, iter, p->delegated_frame_data.get())) | 581 if (!ReadParam(m, iter, p->delegated_frame_data.get())) |
576 return false; | 582 return false; |
577 break; | 583 break; |
578 case GL_FRAME: | 584 case GL_FRAME: |
579 p->gl_frame_data.reset(new cc::GLFrameData()); | 585 p->gl_frame_data.reset(new cc::GLFrameData()); |
580 if (!ReadParam(m, iter, p->gl_frame_data.get())) | 586 if (!ReadParam(m, iter, p->gl_frame_data.get())) |
581 return false; | 587 return false; |
582 break; | 588 break; |
| 589 case SOFTWARE_FRAME: |
| 590 p->software_frame_data.reset(new cc::SoftwareFrameData()); |
| 591 if (!ReadParam(m, iter, p->software_frame_data.get())) |
| 592 return false; |
| 593 break; |
583 case NO_FRAME: | 594 case NO_FRAME: |
584 break; | 595 break; |
585 default: | 596 default: |
586 return false; | 597 return false; |
587 } | 598 } |
588 return true; | 599 return true; |
589 } | 600 } |
590 | 601 |
591 void ParamTraits<cc::CompositorFrame>::Log(const param_type& p, | 602 void ParamTraits<cc::CompositorFrame>::Log(const param_type& p, |
592 std::string* l) { | 603 std::string* l) { |
593 l->append("CompositorFrame("); | 604 l->append("CompositorFrame("); |
594 LogParam(p.metadata, l); | 605 LogParam(p.metadata, l); |
595 l->append(", "); | 606 l->append(", "); |
596 if (p.delegated_frame_data) | 607 if (p.delegated_frame_data) |
597 LogParam(*p.delegated_frame_data, l); | 608 LogParam(*p.delegated_frame_data, l); |
598 else if (p.gl_frame_data) | 609 else if (p.gl_frame_data) |
599 LogParam(*p.gl_frame_data, l); | 610 LogParam(*p.gl_frame_data, l); |
| 611 else if (p.software_frame_data) |
| 612 LogParam(*p.software_frame_data, l); |
600 l->append(")"); | 613 l->append(")"); |
601 } | 614 } |
602 | 615 |
603 void ParamTraits<cc::CompositorFrameAck>::Write(Message* m, | 616 void ParamTraits<cc::CompositorFrameAck>::Write(Message* m, |
604 const param_type& p) { | 617 const param_type& p) { |
605 WriteParam(m, p.resources); | 618 WriteParam(m, p.resources); |
| 619 WriteParam(m, p.last_content_dib); |
606 if (p.gl_frame_data) { | 620 if (p.gl_frame_data) { |
607 WriteParam(m, static_cast<int>(GL_FRAME)); | 621 WriteParam(m, static_cast<int>(GL_FRAME)); |
608 WriteParam(m, *p.gl_frame_data); | 622 WriteParam(m, *p.gl_frame_data); |
609 } else { | 623 } else { |
610 WriteParam(m, static_cast<int>(NO_FRAME)); | 624 WriteParam(m, static_cast<int>(NO_FRAME)); |
611 } | 625 } |
612 } | 626 } |
613 | 627 |
614 bool ParamTraits<cc::CompositorFrameAck>::Read(const Message* m, | 628 bool ParamTraits<cc::CompositorFrameAck>::Read(const Message* m, |
615 PickleIterator* iter, | 629 PickleIterator* iter, |
616 param_type* p) { | 630 param_type* p) { |
617 if (!ReadParam(m, iter, &p->resources)) | 631 if (!ReadParam(m, iter, &p->resources)) |
618 return false; | 632 return false; |
619 | 633 |
| 634 if (!ReadParam(m, iter, &p->last_content_dib)) |
| 635 return false; |
| 636 |
620 int compositor_frame_type; | 637 int compositor_frame_type; |
621 if (!ReadParam(m, iter, &compositor_frame_type)) | 638 if (!ReadParam(m, iter, &compositor_frame_type)) |
622 return false; | 639 return false; |
623 | 640 |
624 switch (compositor_frame_type) { | 641 switch (compositor_frame_type) { |
625 case NO_FRAME: | 642 case NO_FRAME: |
626 break; | 643 break; |
627 case GL_FRAME: | 644 case GL_FRAME: |
628 p->gl_frame_data.reset(new cc::GLFrameData()); | 645 p->gl_frame_data.reset(new cc::GLFrameData()); |
629 if (!ReadParam(m, iter, p->gl_frame_data.get())) | 646 if (!ReadParam(m, iter, p->gl_frame_data.get())) |
630 return false; | 647 return false; |
631 break; | 648 break; |
632 default: | 649 default: |
633 return false; | 650 return false; |
634 } | 651 } |
635 return true; | 652 return true; |
636 } | 653 } |
637 | 654 |
638 void ParamTraits<cc::CompositorFrameAck>::Log(const param_type& p, | 655 void ParamTraits<cc::CompositorFrameAck>::Log(const param_type& p, |
639 std::string* l) { | 656 std::string* l) { |
640 l->append("CompositorFrameAck("); | 657 l->append("CompositorFrameAck("); |
641 LogParam(p.resources, l); | 658 LogParam(p.resources, l); |
642 l->append(", "); | 659 l->append(", "); |
| 660 LogParam(p.last_content_dib, l); |
| 661 l->append(", "); |
643 if (p.gl_frame_data) | 662 if (p.gl_frame_data) |
644 LogParam(*p.gl_frame_data, l); | 663 LogParam(*p.gl_frame_data, l); |
645 l->append(")"); | 664 l->append(")"); |
646 } | 665 } |
647 | 666 |
648 void ParamTraits<cc::DelegatedFrameData>::Write(Message* m, | 667 void ParamTraits<cc::DelegatedFrameData>::Write(Message* m, |
649 const param_type& p) { | 668 const param_type& p) { |
650 WriteParam(m, p.resource_list); | 669 WriteParam(m, p.resource_list); |
651 WriteParam(m, p.render_pass_list.size()); | 670 WriteParam(m, p.render_pass_list.size()); |
652 for (size_t i = 0; i < p.render_pass_list.size(); ++i) | 671 for (size_t i = 0; i < p.render_pass_list.size(); ++i) |
(...skipping 26 matching lines...) Expand all Loading... |
679 l->append(", ["); | 698 l->append(", ["); |
680 for (size_t i = 0; i < p.render_pass_list.size(); ++i) { | 699 for (size_t i = 0; i < p.render_pass_list.size(); ++i) { |
681 if (i) | 700 if (i) |
682 l->append(", "); | 701 l->append(", "); |
683 LogParam(*p.render_pass_list[i], l); | 702 LogParam(*p.render_pass_list[i], l); |
684 } | 703 } |
685 l->append("])"); | 704 l->append("])"); |
686 } | 705 } |
687 | 706 |
688 } // namespace IPC | 707 } // namespace IPC |
OLD | NEW |