From 08bb783777f68c95782bff669717b928432e66c5 Mon Sep 17 00:00:00 2001 From: Brad Hefta-Gaub Date: Sun, 12 Jan 2014 14:49:15 -0800 Subject: [PATCH] more windows build work --- interface/src/Application.cpp | 36 +++++++++++++++++++------------- interface/src/Audio.cpp | 15 +++++++------ interface/src/BandwidthMeter.h | 5 +++++ interface/src/Oscilloscope.cpp | 2 ++ libraries/shared/src/AngleUtil.h | 2 +- libraries/shared/src/Systime.h | 6 +++++- 6 files changed, 44 insertions(+), 22 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index a6b1b45ea7..580daac7b8 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -9,6 +9,8 @@ #include #include +#include + #include #include @@ -320,8 +322,8 @@ void Application::initializeGL() { // Before we render anything, let's set up our viewFrustumOffsetCamera with a sufficiently large // field of view and near and far clip to make it interesting. //viewFrustumOffsetCamera.setFieldOfView(90.0); - _viewFrustumOffsetCamera.setNearClip(0.1); - _viewFrustumOffsetCamera.setFarClip(500.0 * TREE_SCALE); + _viewFrustumOffsetCamera.setNearClip(0.1f); + _viewFrustumOffsetCamera.setFarClip(500.0f * TREE_SCALE); initDisplay(); qDebug( "Initialized Display.\n" ); @@ -1318,7 +1320,7 @@ void Application::sendAvatarFaceVideoMessage(int frameCount, const QByteArray& d getInstance()->controlledBroadcastToNodes(packet, headerSize + payloadSize, &NODE_TYPE_AVATAR_MIXER, 1); *offsetPosition += payloadSize; - } while (*offsetPosition < data.size()); + } while (*offsetPosition < (uint32_t)data.size()); } // Every second, check the frame rates and other stuff @@ -1967,7 +1969,7 @@ void Application::shrinkMirrorView() { const float MAX_AVATAR_EDIT_VELOCITY = 1.0f; const float MAX_VOXEL_EDIT_DISTANCE = 50.0f; -const float HEAD_SPHERE_RADIUS = 0.07; +const float HEAD_SPHERE_RADIUS = 0.07f; static QUuid DEFAULT_NODE_ID_REF; @@ -2861,8 +2863,8 @@ void Application::queryOctree(NODE_TYPE serverType, PACKET_TYPE packetType, Node _voxelQuery.setCameraPosition(glm::vec3(-0.1,-0.1,-0.1)); const glm::quat OFF_IN_NEGATIVE_SPACE = glm::quat(-0.5, 0, -0.5, 1.0); _voxelQuery.setCameraOrientation(OFF_IN_NEGATIVE_SPACE); - _voxelQuery.setCameraNearClip(0.1); - _voxelQuery.setCameraFarClip(0.1); + _voxelQuery.setCameraNearClip(0.1f); + _voxelQuery.setCameraFarClip(0.1f); if (wantExtraDebugging) { qDebug() << "Using 'minimal' camera position for node " << *node << "\n"; } @@ -3020,9 +3022,9 @@ void Application::setupWorldLight() { glm::vec3 sunDirection = getSunDirection(); GLfloat light_position0[] = { sunDirection.x, sunDirection.y, sunDirection.z, 0.0 }; glLightfv(GL_LIGHT0, GL_POSITION, light_position0); - GLfloat ambient_color[] = { 0.7, 0.7, 0.8 }; + GLfloat ambient_color[] = { 0.7f, 0.7f, 0.8f }; glLightfv(GL_LIGHT0, GL_AMBIENT, ambient_color); - GLfloat diffuse_color[] = { 0.8, 0.7, 0.7 }; + GLfloat diffuse_color[] = { 0.8f, 0.7f, 0.7f }; glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse_color); glLightfv(GL_LIGHT0, GL_SPECULAR, WHITE_SPECULAR_COLOR); @@ -3390,7 +3392,7 @@ void Application::displayOverlay() { node->getType() == NODE_TYPE_AGENT ? totalAvatars++ : totalServers++; } sprintf(nodes, "Servers: %d, Avatars: %d\n", totalServers, totalAvatars); - drawtext(_glWidget->width() - 150, 20, 0.10, 0, 1.0, 0, nodes, 1, 0, 0); + drawtext(_glWidget->width() - 150, 20, 0.10f, 0, 1.0f, 0, nodes, 1, 0, 0); } // testing rendering coverage map @@ -3412,8 +3414,8 @@ void Application::displayOverlay() { char frameTimer[10]; uint64_t mSecsNow = floor(usecTimestampNow() / 1000.0 + 0.5); sprintf(frameTimer, "%d\n", (int)(mSecsNow % 1000)); - drawtext(_glWidget->width() - 100, _glWidget->height() - 20, 0.30, 0, 1.0, 0, frameTimer, 0, 0, 0); - drawtext(_glWidget->width() - 102, _glWidget->height() - 22, 0.30, 0, 1.0, 0, frameTimer, 1, 1, 1); + drawtext(_glWidget->width() - 100, _glWidget->height() - 20, 0.30f, 0, 1.0f, 0, frameTimer, 0, 0, 0); + drawtext(_glWidget->width() - 102, _glWidget->height() - 22, 0.30f, 0, 1.0f, 0, frameTimer, 1, 1, 1); } @@ -3475,6 +3477,12 @@ void Application::displayOverlay() { glPopMatrix(); } +#ifdef WIN32 +double roundf(double value) { + return (value > 0.0) ? floor(value + 0.5) : ceil(value - 0.5); +} +#endif + void Application::displayStats() { int statsVerticalOffset = 8; const int PELS_PER_LINE = 15; @@ -4205,7 +4213,7 @@ void Application::nodeKilled(Node* node) { if (!Menu::getInstance()->isOptionChecked(MenuOption::DontFadeOnVoxelServerChanges)) { VoxelFade fade(VoxelFade::FADE_OUT, NODE_KILLED_RED, NODE_KILLED_GREEN, NODE_KILLED_BLUE); fade.voxelDetails = rootDetails; - const float slightly_smaller = 0.99; + const float slightly_smaller = 0.99f; fade.voxelDetails.s = fade.voxelDetails.s * slightly_smaller; _voxelFades.push_back(fade); } @@ -4236,7 +4244,7 @@ void Application::nodeKilled(Node* node) { if (!Menu::getInstance()->isOptionChecked(MenuOption::DontFadeOnVoxelServerChanges)) { VoxelFade fade(VoxelFade::FADE_OUT, NODE_KILLED_RED, NODE_KILLED_GREEN, NODE_KILLED_BLUE); fade.voxelDetails = rootDetails; - const float slightly_smaller = 0.99; + const float slightly_smaller = 0.99f; fade.voxelDetails.s = fade.voxelDetails.s * slightly_smaller; _voxelFades.push_back(fade); } @@ -4326,7 +4334,7 @@ int Application::parseOctreeStats(unsigned char* messageData, ssize_t messageLen if (!Menu::getInstance()->isOptionChecked(MenuOption::DontFadeOnVoxelServerChanges)) { VoxelFade fade(VoxelFade::FADE_OUT, NODE_ADDED_RED, NODE_ADDED_GREEN, NODE_ADDED_BLUE); fade.voxelDetails = rootDetails; - const float slightly_smaller = 0.99; + const float slightly_smaller = 0.99f; fade.voxelDetails.s = fade.voxelDetails.s * slightly_smaller; _voxelFades.push_back(fade); } diff --git a/interface/src/Audio.cpp b/interface/src/Audio.cpp index e7148d37e3..7835340e54 100644 --- a/interface/src/Audio.cpp +++ b/interface/src/Audio.cpp @@ -9,6 +9,8 @@ #include #include +#include + #ifdef __APPLE__ #include #endif @@ -185,7 +187,7 @@ void linearResampling(int16_t* sourceSamples, int16_t* destinationSamples, // we need to downsample from 48 to 24 // for now this only supports a mono output - this would be the case for audio input - for (int i = sourceAudioFormat.channelCount(); i < numSourceSamples; i += 2 * sourceAudioFormat.channelCount()) { + for (unsigned int i = sourceAudioFormat.channelCount(); i < numSourceSamples; i += 2 * sourceAudioFormat.channelCount()) { if (i + (sourceAudioFormat.channelCount()) >= numSourceSamples) { destinationSamples[(i - sourceAudioFormat.channelCount()) / (int) sourceToDestinationFactor] = (sourceSamples[i - sourceAudioFormat.channelCount()] / 2) @@ -206,11 +208,11 @@ void linearResampling(int16_t* sourceSamples, int16_t* destinationSamples, int sampleShift = destinationAudioFormat.channelCount() * dtsSampleRateFactor; int destinationToSourceFactor = (1 / sourceToDestinationFactor); - for (int i = 0; i < numDestinationSamples; i += sampleShift) { + for (unsigned int i = 0; i < numDestinationSamples; i += sampleShift) { sourceIndex = (i / destinationToSourceFactor); // fill the L/R channels and make the rest silent - for (int j = i; j < i + sampleShift; j++) { + for (unsigned int j = i; j < i + sampleShift; j++) { if (j % destinationAudioFormat.channelCount() == 0) { // left channel destinationSamples[j] = sourceSamples[sourceIndex]; @@ -293,7 +295,7 @@ void Audio::handleAudioInput() { static float inputToNetworkInputRatio = _numInputCallbackBytes * CALLBACK_ACCELERATOR_RATIO / NETWORK_BUFFER_LENGTH_BYTES_PER_CHANNEL; - static int inputSamplesRequired = NETWORK_BUFFER_LENGTH_SAMPLES_PER_CHANNEL * inputToNetworkInputRatio; + static unsigned int inputSamplesRequired = NETWORK_BUFFER_LENGTH_SAMPLES_PER_CHANNEL * inputToNetworkInputRatio; QByteArray inputByteArray = _inputDevice->readAll(); @@ -325,7 +327,7 @@ void Audio::handleAudioInput() { while (_inputRingBuffer.samplesAvailable() > inputSamplesRequired) { - int16_t inputAudioSamples[inputSamplesRequired]; + int16_t* inputAudioSamples = new int16_t[inputSamplesRequired]; _inputRingBuffer.readSamples(inputAudioSamples, inputSamplesRequired); // zero out the monoAudioSamples array and the locally injected audio @@ -403,6 +405,7 @@ void Audio::handleAudioInput() { Application::getInstance()->getBandwidthMeter()->outputStream(BandwidthMeter::AUDIO) .updateValue(NETWORK_BUFFER_LENGTH_BYTES_PER_CHANNEL + leadingBytes); } + delete[] inputAudioSamples; } } @@ -464,7 +467,7 @@ void Audio::addReceivedAudioToBuffer(const QByteArray& audioByteArray) { // add to the output samples whatever is in the _localAudioOutput byte array // that lets this user hear sound effects and loopback (if enabled) - for (unsigned int b = 0; b < _localInjectionByteArrays.size(); b++) { + for (int b = 0; b < _localInjectionByteArrays.size(); b++) { QByteArray audioByteArray = _localInjectionByteArrays.at(b); int16_t* byteArraySamples = (int16_t*) audioByteArray.data(); diff --git a/interface/src/BandwidthMeter.h b/interface/src/BandwidthMeter.h index 0221306ed7..5879b1546d 100644 --- a/interface/src/BandwidthMeter.h +++ b/interface/src/BandwidthMeter.h @@ -9,6 +9,11 @@ #ifndef __interface__BandwidthMeter__ #define __interface__BandwidthMeter__ +#ifdef _WIN32 +#define WANT_TIMEVAL +#include +#endif + #include #include "ui/TextRenderer.h" diff --git a/interface/src/Oscilloscope.cpp b/interface/src/Oscilloscope.cpp index 5b3cfb9f09..8a95d6a6b8 100644 --- a/interface/src/Oscilloscope.cpp +++ b/interface/src/Oscilloscope.cpp @@ -10,6 +10,8 @@ #include #include +#include + #include #include "InterfaceConfig.h" diff --git a/libraries/shared/src/AngleUtil.h b/libraries/shared/src/AngleUtil.h index 8308eadf43..cecee31188 100644 --- a/libraries/shared/src/AngleUtil.h +++ b/libraries/shared/src/AngleUtil.h @@ -22,7 +22,7 @@ struct Radians { static float pi() { return 3.141592653589793f; } static float twicePi() { return 6.283185307179586f; } - static float halfPi() { return 1.5707963267948966; } + static float halfPi() { return 1.5707963267948966f; } }; struct Rotations { diff --git a/libraries/shared/src/Systime.h b/libraries/shared/src/Systime.h index cab5137ce4..1d25de0b80 100644 --- a/libraries/shared/src/Systime.h +++ b/libraries/shared/src/Systime.h @@ -1,6 +1,7 @@ #ifndef __Systime__ #define __Systime__ + #ifdef _WIN32 #ifdef _WINSOCK2API_ @@ -14,7 +15,10 @@ * and used in other calls. */ -#if 0 // not needed for VC2010 +// this is a bit of a hack for now, but sometimes on windows +// we need timeval defined here, sometimes we get it +// from winsock.h +#ifdef WANT_TIMEVAL struct timeval { long tv_sec; /* seconds */ long tv_usec; /* and microseconds */