cleanup dead nanomsg and build_overrides
BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2287013003 TBR= Review-Url: https://codereview.chromium.org/2287013003
This commit is contained in:
parent
79418093c1
commit
cdc8942fd6
1
DEPS
1
DEPS
@ -17,7 +17,6 @@ deps = {
|
||||
"third_party/externals/harfbuzz": "https://skia.googlesource.com/third_party/harfbuzz.git@1.3.0",
|
||||
"third_party/externals/jsoncpp" : "https://chromium.googlesource.com/external/github.com/open-source-parsers/jsoncpp.git@1.0.0",
|
||||
"third_party/externals/libwebp" : "https://chromium.googlesource.com/webm/libwebp.git@v0.5.0",
|
||||
"third_party/externals/nanomsg" : "https://skia.googlesource.com/third_party/nanomsg.git@0.4-beta",
|
||||
"third_party/externals/zlib" : "https://chromium.googlesource.com/chromium/src/third_party/zlib@4576304a4b9835aa8646c9735b079e1d96858633",
|
||||
"third_party/externals/giflib" : "https://android.googlesource.com/platform/external/giflib.git@ab10e256df4f684260ca239905b1cec727181f6c",
|
||||
|
||||
|
@ -77,7 +77,6 @@ find_dirs = [
|
||||
'gm',
|
||||
'tests',
|
||||
'third_party/externals/icu/source/common',
|
||||
'third_party/externals/nanomsg/src',
|
||||
'third_party/externals/sfntly/sfntly',
|
||||
'third_party/externals/shaderc2',
|
||||
'tools/VisualBench',
|
||||
|
@ -1,3 +0,0 @@
|
||||
mac_sdk_min_build_override = "10.10"
|
||||
mac_deployment_target_build_override = "10.7"
|
||||
|
@ -1,214 +0,0 @@
|
||||
/*
|
||||
* Copyright 2014 Google Inc.
|
||||
*
|
||||
* Use of this source code is governed by a BSD-style license that can be
|
||||
* found in the LICENSE file.
|
||||
*/
|
||||
|
||||
#include "nanomsg/src/nn.h"
|
||||
#include "nanomsg/src/pipeline.h"
|
||||
#include "nanomsg/src/reqrep.h"
|
||||
|
||||
#include "SkCanvas.h"
|
||||
#include "SkCommandLineFlags.h"
|
||||
#include "SkData.h"
|
||||
#include "SkForceLinking.h"
|
||||
#include "SkGraphics.h"
|
||||
#include "SkImageEncoder.h"
|
||||
#include "SkOSFile.h"
|
||||
#include "SkPicture.h"
|
||||
#include "SkRandom.h"
|
||||
#include "SkStream.h"
|
||||
|
||||
__SK_FORCE_IMAGE_DECODER_LINKING;
|
||||
|
||||
// To keep things simple, PictureHeader is fixed-size POD.
|
||||
struct PictureHeader {
|
||||
SkMatrix matrix;
|
||||
SkRect clip;
|
||||
SkXfermode::Mode xfermode;
|
||||
pid_t pid;
|
||||
uint8_t alpha;
|
||||
|
||||
PictureHeader()
|
||||
: matrix(SkMatrix::I())
|
||||
, clip(SkRect::MakeLargest())
|
||||
, xfermode(SkXfermode::kSrcOver_Mode)
|
||||
, pid(getpid())
|
||||
, alpha(0xFF) {}
|
||||
};
|
||||
|
||||
// A little adaptor: nn_iovec wants a non-const pointer for no obvious reason.
|
||||
static struct nn_iovec create_iov(const void* ptr, size_t size) {
|
||||
struct nn_iovec iov = { const_cast<void*>(ptr), size };
|
||||
return iov;
|
||||
}
|
||||
|
||||
static void send_picture(int socket, const PictureHeader& header, const SkData& skp) {
|
||||
// Vectored IO lets us send header and skp contiguously without first
|
||||
// copying them to a contiguous buffer.
|
||||
struct nn_iovec iov[] = {
|
||||
create_iov(&header, sizeof(header)),
|
||||
create_iov(skp.data(), skp.size()),
|
||||
};
|
||||
|
||||
struct nn_msghdr msg;
|
||||
sk_bzero(&msg, sizeof(msg));
|
||||
msg.msg_iov = iov;
|
||||
msg.msg_iovlen = SK_ARRAY_COUNT(iov);
|
||||
|
||||
nn_sendmsg(socket, &msg, 0/*flags*/);
|
||||
}
|
||||
|
||||
static sk_sp<SkPicture> recv_picture(int socket, PictureHeader* header) {
|
||||
static const size_t hSize = sizeof(*header); // It's easy to slip up and use sizeof(header).
|
||||
|
||||
void* msg;
|
||||
int size = nn_recv(socket, &msg, NN_MSG, 0/*flags*/);
|
||||
SkDebugf("%d bytes", size);
|
||||
|
||||
// msg is first a fixed-size header, then an .skp.
|
||||
memcpy(header, msg, hSize);
|
||||
SkMemoryStream stream((uint8_t*)msg + hSize, size - hSize);
|
||||
sk_sp<SkPicture> pic = SkPicture::MakeFromStream(&stream);
|
||||
|
||||
SkDebugf(" from proccess %d:", header->pid);
|
||||
|
||||
nn_freemsg(msg);
|
||||
return pic;
|
||||
}
|
||||
|
||||
static void client(const char* skpPath, const char* dataEndpoint) {
|
||||
// Read the .skp.
|
||||
sk_sp<SkData> skp(SkData::MakeFromFileName(skpPath));
|
||||
if (!skp) {
|
||||
SkDebugf("Couldn't read %s\n", skpPath);
|
||||
exit(1);
|
||||
}
|
||||
SkMemoryStream stream(skp->data(), skp->size());
|
||||
sk_sp<SkPicture> picture(SkPicture::MakeFromStream(&stream));
|
||||
|
||||
PictureHeader header;
|
||||
SkRandom rand(picture->cullRect().width() * picture->cullRect().height());
|
||||
SkScalar r = rand.nextRangeScalar(0, picture->cullRect().width()),
|
||||
b = rand.nextRangeScalar(0, picture->cullRect().height()),
|
||||
l = rand.nextRangeScalar(0, r),
|
||||
t = rand.nextRangeScalar(0, b);
|
||||
header.clip.setLTRB(l,t,r,b);
|
||||
header.matrix.setTranslate(-l, -t);
|
||||
header.matrix.postRotate(rand.nextRangeScalar(-25, 25));
|
||||
header.alpha = 0x7F;
|
||||
|
||||
//Clients use NN_REQ (request) type sockets.
|
||||
int socket = nn_socket(AF_SP, NN_REQ);
|
||||
|
||||
// Clients connect a socket to an endpoint.
|
||||
nn_connect(socket, dataEndpoint);
|
||||
|
||||
// Send the picture and its header.
|
||||
SkDebugf("Sending %s (%d bytes)...", skpPath, skp->size());
|
||||
send_picture(socket, header, *skp);
|
||||
|
||||
// Wait for ack.
|
||||
uint8_t ack;
|
||||
nn_recv(socket, &ack, sizeof(ack), 0/*flags*/);
|
||||
SkDebugf(" ok.\n");
|
||||
}
|
||||
|
||||
// Wait until socketA or socketB has something to tell us, and return which one.
|
||||
static int poll_in(int socketA, int socketB) {
|
||||
struct nn_pollfd polls[] = {
|
||||
{ socketA, NN_POLLIN, 0 },
|
||||
{ socketB, NN_POLLIN, 0 },
|
||||
};
|
||||
|
||||
nn_poll(polls, SK_ARRAY_COUNT(polls), -1/*no timeout*/);
|
||||
|
||||
if (polls[0].revents & NN_POLLIN) { return socketA; }
|
||||
if (polls[1].revents & NN_POLLIN) { return socketB; }
|
||||
|
||||
SkFAIL("unreachable");
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void server(const char* dataEndpoint, const char* controlEndpoint, SkCanvas* canvas) {
|
||||
// NN_REP sockets receive a request then make a reply. NN_PULL sockets just receive a request.
|
||||
int data = nn_socket(AF_SP, NN_REP);
|
||||
int control = nn_socket(AF_SP, NN_PULL);
|
||||
|
||||
// Servers bind a socket to an endpoint.
|
||||
nn_bind(data, dataEndpoint);
|
||||
nn_bind(control, controlEndpoint);
|
||||
|
||||
while (true) {
|
||||
int ready = poll_in(data, control);
|
||||
|
||||
// If we got any message on the control socket, we can stop.
|
||||
if (ready == control) {
|
||||
break;
|
||||
}
|
||||
|
||||
// We should have an .skp waiting for us on data socket.
|
||||
PictureHeader header;
|
||||
sk_sp<SkPicture> picture(recv_picture(data, &header));
|
||||
|
||||
SkPaint paint;
|
||||
paint.setAlpha(header.alpha);
|
||||
paint.setXfermodeMode(header.xfermode);
|
||||
|
||||
canvas->saveLayer(NULL, &paint);
|
||||
canvas->concat(header.matrix);
|
||||
canvas->clipRect(header.clip);
|
||||
picture->playback(canvas);
|
||||
canvas->restore();
|
||||
SkDebugf(" drew");
|
||||
|
||||
// Send back an ack.
|
||||
uint8_t ack = 42;
|
||||
nn_send(data, &ack, sizeof(ack), 0/*flags*/);
|
||||
SkDebugf(" and acked.\n");
|
||||
}
|
||||
}
|
||||
|
||||
static void stop(const char* controlEndpoint) {
|
||||
// An NN_PUSH socket can send messages but not receive them.
|
||||
int control = nn_socket(AF_SP, NN_PUSH);
|
||||
nn_connect(control, controlEndpoint);
|
||||
|
||||
// Sending anything (including this 0-byte message) will tell server() to stop.
|
||||
nn_send(control, NULL, 0, 0/*flags*/);
|
||||
}
|
||||
|
||||
DEFINE_string2(skp, r, "", ".skp to send (as client)");
|
||||
DEFINE_string2(png, w, "", ".png to write (as server)");
|
||||
DEFINE_bool(stop, false, "If true, tell server to stop and write its canvas out as a .png.");
|
||||
DEFINE_string(data, "ipc://nanomsg-picture-data", "Endpoint for sending pictures.");
|
||||
DEFINE_string(control, "ipc://nanomsg-picture-control", "Endpoint for control channel.");
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
SkAutoGraphics ag;
|
||||
SkCommandLineFlags::Parse(argc, argv);
|
||||
|
||||
if (FLAGS_stop) {
|
||||
stop(FLAGS_control[0]);
|
||||
}
|
||||
|
||||
if (!FLAGS_skp.isEmpty()) {
|
||||
client(FLAGS_skp[0], FLAGS_data[0]);
|
||||
}
|
||||
|
||||
if (!FLAGS_png.isEmpty()) {
|
||||
SkBitmap bitmap;
|
||||
bitmap.allocN32Pixels(1000, 1000);
|
||||
SkCanvas canvas(bitmap);
|
||||
canvas.clear(0xFFFFFFFF);
|
||||
|
||||
server(FLAGS_data[0], FLAGS_control[0], &canvas);
|
||||
canvas.flush();
|
||||
|
||||
SkImageEncoder::EncodeFile(FLAGS_png[0], bitmap, SkImageEncoder::kPNG_Type, 100);
|
||||
SkDebugf("Wrote %s.\n", FLAGS_png[0]);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
@ -57,11 +57,6 @@
|
||||
],
|
||||
'dependencies': ['iOSShell.gyp:iOSShell' ],
|
||||
}],
|
||||
['skia_os == "mac" or skia_os == "linux"', {
|
||||
'dependencies': [
|
||||
'nanomsg.gyp:*' ,
|
||||
],
|
||||
}],
|
||||
['skia_os in ["linux", "mac", "win"]', {
|
||||
'dependencies': [
|
||||
'skiaserve.gyp:skiaserve',
|
||||
|
129
gyp/nanomsg.gyp
129
gyp/nanomsg.gyp
@ -1,129 +0,0 @@
|
||||
# Copyright 2015 Google Inc.
|
||||
#
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
{
|
||||
'variables': {
|
||||
'skia_warnings_as_errors': 0,
|
||||
},
|
||||
'targets': [{
|
||||
# Draws pictures cross-process.
|
||||
'target_name': 'nanomsg_picture_demo',
|
||||
'type': 'executable',
|
||||
'dependencies': [
|
||||
'skia_lib.gyp:skia_lib',
|
||||
'flags.gyp:flags',
|
||||
'libnanomsg',
|
||||
],
|
||||
'sources': [ '../experimental/nanomsg/picture_demo.cpp' ],
|
||||
},{
|
||||
'target_name': 'libnanomsg',
|
||||
'type': 'static_library',
|
||||
|
||||
# Clients can include nanomsg public header foo.h with #include "nanomsg/src/foo.h"
|
||||
'direct_dependent_settings': {
|
||||
'include_dirs': [ '../third_party/externals' ]
|
||||
},
|
||||
|
||||
'sources': [
|
||||
'<!@(python find.py "*.c" ../third_party/externals/nanomsg/src)'
|
||||
],
|
||||
|
||||
# TODO(mtklein): Support Windows?
|
||||
# To refresh: cd third_party/externals/nanomsg; ./autogen.sh; ./configure; copy from Makefile.
|
||||
'conditions': [
|
||||
['skia_os == "linux"', {
|
||||
'cflags': [ '-w' ],
|
||||
'libraries': [
|
||||
'-lpthread',
|
||||
'-lanl', # Provides getaddrinfo_a and co.
|
||||
],
|
||||
'direct_dependent_settings': {
|
||||
'libraries': [ '-lpthread', '-lanl' ],
|
||||
},
|
||||
'defines=': [ # equals sign throws away most Skia defines (just noise)
|
||||
'HAVE_ACCEPT4',
|
||||
'HAVE_ARPA_INET_H',
|
||||
'HAVE_CLOCK_GETTIME',
|
||||
'HAVE_DLFCN_H',
|
||||
'HAVE_EPOLL_CREATE',
|
||||
'HAVE_EVENTFD',
|
||||
'HAVE_GETIFADDRS',
|
||||
'HAVE_INTTYPES_H',
|
||||
'HAVE_MEMORY_H',
|
||||
'HAVE_NETDB_H',
|
||||
'HAVE_NETINET_IN_H',
|
||||
'HAVE_PIPE',
|
||||
'HAVE_PIPE2',
|
||||
'HAVE_POLL',
|
||||
'HAVE_PTHREAD_PRIO_INHERIT',
|
||||
'HAVE_STDINT_H',
|
||||
'HAVE_STDLIB_H',
|
||||
'HAVE_STRINGS_H',
|
||||
'HAVE_STRING_H',
|
||||
'HAVE_SYS_IOCTL_H',
|
||||
'HAVE_SYS_SOCKET_H',
|
||||
'HAVE_SYS_STAT_H',
|
||||
'HAVE_SYS_TYPES_H',
|
||||
'HAVE_UNISTD_H',
|
||||
'HAVE_UNISTD_H',
|
||||
'NN_HAVE_ACCEPT4',
|
||||
'NN_HAVE_CLANG',
|
||||
'NN_HAVE_EVENTFD',
|
||||
'NN_HAVE_GCC',
|
||||
'NN_HAVE_GETADDRINFO_A',
|
||||
'NN_HAVE_LINUX',
|
||||
'NN_HAVE_PIPE',
|
||||
'NN_HAVE_PIPE2',
|
||||
'NN_HAVE_POLL',
|
||||
'NN_HAVE_SEMAPHORE',
|
||||
'NN_HAVE_SOCKETPAIR',
|
||||
'NN_USE_EPOLL',
|
||||
'NN_USE_EVENTFD',
|
||||
'NN_USE_IFADDRS',
|
||||
'STDC_HEADERS',
|
||||
'_GNU_SOURCE',
|
||||
],
|
||||
}],
|
||||
['skia_os == "mac"', {
|
||||
'xcode_settings': {
|
||||
'WARNING_CFLAGS': [ '-w' ],
|
||||
},
|
||||
'defines=': [ # equals sign throws away most Skia defines (just noise)
|
||||
'HAVE_ARPA_INET_H',
|
||||
'HAVE_DLFCN_H',
|
||||
'HAVE_GETIFADDRS',
|
||||
'HAVE_INTTYPES_H',
|
||||
'HAVE_KQUEUE',
|
||||
'HAVE_MEMORY_H',
|
||||
'HAVE_NETDB_H',
|
||||
'HAVE_NETINET_IN_H',
|
||||
'HAVE_PIPE',
|
||||
'HAVE_POLL',
|
||||
'HAVE_PTHREAD_PRIO_INHERIT',
|
||||
'HAVE_STDINT_H',
|
||||
'HAVE_STDLIB_H',
|
||||
'HAVE_STRINGS_H',
|
||||
'HAVE_STRING_H',
|
||||
'HAVE_SYS_IOCTL_H',
|
||||
'HAVE_SYS_SOCKET_H',
|
||||
'HAVE_SYS_STAT_H',
|
||||
'HAVE_SYS_TYPES_H',
|
||||
'HAVE_UNISTD_H',
|
||||
'NN_HAVE_CLANG',
|
||||
'NN_HAVE_GCC',
|
||||
'NN_HAVE_OSX',
|
||||
'NN_HAVE_PIPE',
|
||||
'NN_HAVE_POLL',
|
||||
'NN_HAVE_SEMAPHORE',
|
||||
'NN_HAVE_SOCKETPAIR',
|
||||
'NN_USE_IFADDRS',
|
||||
'NN_USE_KQUEUE',
|
||||
'NN_USE_PIPE',
|
||||
'STDC_HEADERS',
|
||||
'_THREAD_SAFE',
|
||||
],
|
||||
}],
|
||||
]
|
||||
}]
|
||||
}
|
Loading…
Reference in New Issue
Block a user