Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(448)

Side by Side Diff: app/gfx/gl/gl_context_win.cc

Issue 4281003: Fixed mismatched channel order in OSMesaViewGLContext.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 10 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 // This file implements the NativeViewGLContext and PbufferGLContext classes. 5 // This file implements the NativeViewGLContext and PbufferGLContext classes.
6 6
7 #include "app/gfx/gl/gl_context.h" 7 #include "app/gfx/gl/gl_context.h"
8 8
9 #include <GL/osmesa.h> 9 #include <GL/osmesa.h>
10 10
(...skipping 472 matching lines...) Expand 10 before | Expand all | Expand 10 after
483 gfx::Size size = osmesa_context_.GetSize(); 483 gfx::Size size = osmesa_context_.GetSize();
484 484
485 // Note: negating the height below causes GDI to treat the bitmap data as row 485 // Note: negating the height below causes GDI to treat the bitmap data as row
486 // 0 being at the top. 486 // 0 being at the top.
487 BITMAPV4HEADER info = { sizeof(BITMAPV4HEADER) }; 487 BITMAPV4HEADER info = { sizeof(BITMAPV4HEADER) };
488 info.bV4Width = size.width(); 488 info.bV4Width = size.width();
489 info.bV4Height = -size.height(); 489 info.bV4Height = -size.height();
490 info.bV4Planes = 1; 490 info.bV4Planes = 1;
491 info.bV4BitCount = 32; 491 info.bV4BitCount = 32;
492 info.bV4V4Compression = BI_BITFIELDS; 492 info.bV4V4Compression = BI_BITFIELDS;
493 info.bV4RedMask = 0xFF000000; 493 info.bV4RedMask = 0x000000FF;
494 info.bV4GreenMask = 0x00FF0000; 494 info.bV4GreenMask = 0x0000FF00;
495 info.bV4BlueMask = 0x0000FF00; 495 info.bV4BlueMask = 0x00FF0000;
496 info.bV4AlphaMask = 0x000000FF; 496 info.bV4AlphaMask = 0xFF000000;
497 497
498 // Copy the back buffer to the window's device context. 498 // Copy the back buffer to the window's device context.
499 return StretchDIBits(device_context_, 499 return StretchDIBits(device_context_,
500 0, 0, size.width(), size.height(), 500 0, 0, size.width(), size.height(),
501 0, 0, size.width(), size.height(), 501 0, 0, size.width(), size.height(),
502 osmesa_context_.buffer(), 502 osmesa_context_.buffer(),
503 reinterpret_cast<BITMAPINFO*>(&info), 503 reinterpret_cast<BITMAPINFO*>(&info),
504 DIB_RGB_COLORS, 504 DIB_RGB_COLORS,
505 SRCCOPY) != 0; 505 SRCCOPY) != 0;
506 } 506 }
507 507
508 gfx::Size OSMesaViewGLContext::GetSize() { 508 gfx::Size OSMesaViewGLContext::GetSize() {
509 return osmesa_context_.GetSize(); 509 return osmesa_context_.GetSize();
510 } 510 }
511 511
512 void* OSMesaViewGLContext::GetHandle() { 512 void* OSMesaViewGLContext::GetHandle() {
513 return osmesa_context_.GetHandle(); 513 return osmesa_context_.GetHandle();
514 } 514 }
515 515
516 void OSMesaViewGLContext::SetSwapInterval(int interval) { 516 void OSMesaViewGLContext::SetSwapInterval(int interval) {
517 DCHECK(IsCurrent()); 517 DCHECK(IsCurrent());
518 // Fail silently. It is legitimate to set the swap interval on a view context 518 // Fail silently. It is legitimate to set the swap interval on a view context
519 // but GDI does not have those semantics. 519 // but GDI does not have those semantics.
520 } 520 }
521 521
522 void OSMesaViewGLContext::UpdateSize() { 522 void OSMesaViewGLContext::UpdateSize() {
523 // Change back buffer size to that of window. 523 // Change back buffer size to that of window.
524 RECT rect; 524 RECT rect;
525 GetClientRect(window_, &rect); 525 if (!GetClientRect(window_, &rect))
526 return;
527
526 gfx::Size window_size = gfx::Size( 528 gfx::Size window_size = gfx::Size(
527 std::max(1, static_cast<int>(rect.right - rect.left)), 529 std::max(1, static_cast<int>(rect.right - rect.left)),
528 std::max(1, static_cast<int>(rect.bottom - rect.top))); 530 std::max(1, static_cast<int>(rect.bottom - rect.top)));
529 osmesa_context_.Resize(window_size); 531 osmesa_context_.Resize(window_size);
530 } 532 }
531 533
532 GLContext* GLContext::CreateViewGLContext(gfx::PluginWindowHandle window, 534 GLContext* GLContext::CreateViewGLContext(gfx::PluginWindowHandle window,
533 bool multisampled) { 535 bool multisampled) {
534 switch (GetGLImplementation()) { 536 switch (GetGLImplementation()) {
535 case kGLImplementationOSMesaGL: { 537 case kGLImplementationOSMesaGL: {
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
718 } 720 }
719 case kGLImplementationMockGL: 721 case kGLImplementationMockGL:
720 return new StubGLContext; 722 return new StubGLContext;
721 default: 723 default:
722 NOTREACHED(); 724 NOTREACHED();
723 return NULL; 725 return NULL;
724 } 726 }
725 } 727 }
726 728
727 } // namespace gfx 729 } // namespace gfx
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698