RemoteRenderingBackendCreationParameters.h [plain text]
#pragma once
#if ENABLE(GPU_PROCESS)
#include "RenderingBackendIdentifier.h"
#include <wtf/MachSendRight.h>
namespace WebKit {
struct RemoteRenderingBackendCreationParameters {
RenderingBackendIdentifier identifier;
#if PLATFORM(COCOA)
MachSendRight sendRightForResumeDisplayListSemaphore;
#endif
template<class Encoder> void encode(Encoder&) const;
template<class Decoder> static Optional<RemoteRenderingBackendCreationParameters> decode(Decoder&);
};
template<class Encoder>
void RemoteRenderingBackendCreationParameters::encode(Encoder& encoder) const
{
encoder << identifier;
#if PLATFORM(COCOA)
encoder << sendRightForResumeDisplayListSemaphore;
#endif
}
template<class Decoder>
Optional<RemoteRenderingBackendCreationParameters> RemoteRenderingBackendCreationParameters::decode(Decoder& decoder)
{
RemoteRenderingBackendCreationParameters parameters;
Optional<RenderingBackendIdentifier> identifier;
decoder >> identifier;
if (!identifier)
return WTF::nullopt;
parameters.identifier = *identifier;
#if PLATFORM(COCOA)
Optional<MachSendRight> sendRightForResumeDisplayListSemaphore;
decoder >> sendRightForResumeDisplayListSemaphore;
if (!sendRightForResumeDisplayListSemaphore)
return WTF::nullopt;
parameters.sendRightForResumeDisplayListSemaphore = WTFMove(*sendRightForResumeDisplayListSemaphore);
#endif
return parameters;
}
}
#endif // ENABLE(GPU_PROCESS)