Hash :
77a72f6e
Author :
Date :
2015-04-14T11:18:32
Release Surface when calling makeCurrent with null. Refactorings to egl::Surface to enable ref-counting were causing a situation where we could have two Window surfaces alive at the same time. This would confuse the window procedure logic in SurfaceD3D. Releasing the surface fixes this issue and conforms closely to the wording on the spec on when Surfaces should be deleted. Also add a test for message loops and surfaces. BUG=475085 BUG=angleproject:963 Change-Id: Icdee3a7db97c9b54d779dabf1e1f82a89fefc546 Reviewed-on: https://chromium-review.googlesource.com/265064 Reviewed-by: Kenneth Russell <kbr@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
//
// Copyright (c) 2014 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
#ifndef SAMPLE_UTIL_EVENT_H
#define SAMPLE_UTIL_EVENT_H
#include "keyboard.h"
#include "mouse.h"
class Event
{
public:
struct MoveEvent
{
int X;
int Y;
};
struct SizeEvent
{
int Width;
int Height;
};
struct KeyEvent
{
Key Code;
bool Alt;
bool Control;
bool Shift;
bool System;
};
struct MouseMoveEvent
{
int X;
int Y;
};
struct MouseButtonEvent
{
MouseButton Button;
int X;
int Y;
};
struct MouseWheelEvent
{
int Delta;
};
enum EventType
{
EVENT_CLOSED, // The window requested to be closed
EVENT_MOVED, // The window has moved
EVENT_RESIZED, // The window was resized
EVENT_LOST_FOCUS, // The window lost the focus
EVENT_GAINED_FOCUS, // The window gained the focus
EVENT_TEXT_ENTERED, // A character was entered
EVENT_KEY_PRESSED, // A key was pressed
EVENT_KEY_RELEASED, // A key was released
EVENT_MOUSE_WHEEL_MOVED, // The mouse wheel was scrolled
EVENT_MOUSE_BUTTON_PRESSED, // A mouse button was pressed
EVENT_MOUSE_BUTTON_RELEASED, // A mouse button was released
EVENT_MOUSE_MOVED, // The mouse cursor moved
EVENT_MOUSE_ENTERED, // The mouse cursor entered the area of the window
EVENT_MOUSE_LEFT, // The mouse cursor left the area of the window
EVENT_TEST, // Event for testing purposes
};
EventType Type;
union
{
MoveEvent Move; // Move event parameters
SizeEvent Size; // Size event parameters
KeyEvent Key; // Key event parameters
MouseMoveEvent MouseMove; // Mouse move event parameters
MouseButtonEvent MouseButton; // Mouse button event parameters
MouseWheelEvent MouseWheel; // Mouse wheel event parameters
};
};
#endif SAMPLE_UTIL_EVENT_H