Have the OpenGL editor work with the newest sync library codebase.

This commit is contained in:
mathieu _alkama_ m 2015-12-13 01:08:39 +01:00
parent 0384575ab4
commit a5cee4157f
6 changed files with 123 additions and 18 deletions

View File

@ -18,6 +18,14 @@
#include "../../lib/base.h"
#include <emgui/Emgui.h>
enum {
SET_KEY = 0,
DELETE_KEY = 1,
GET_TRACK = 2,
SET_ROW = 3,
PAUSE = 4,
SAVE_TRACKS = 5
};
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
static void updateNeedsSaving();
@ -139,7 +147,7 @@ void setMostRecentFile(const text_t* filename)
static inline struct sync_track** getTracks()
{
return s_editorData.trackData.syncData.tracks;
return s_editorData.trackData.syncTracks;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@ -174,7 +182,7 @@ static inline int getActiveTrack()
static inline int getTrackCount()
{
return s_editorData.trackData.syncData.num_tracks;
return s_editorData.trackData.num_syncTracks;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@ -864,7 +872,7 @@ static int processCommands()
// setup remap and send the keyframes to the demo
RemoteConnection_mapTrackName(trackName);
RemoteConnection_sendKeyFrames(trackName, s_editorData.trackData.syncData.tracks[serverIndex]);
RemoteConnection_sendKeyFrames(trackName, s_editorData.trackData.syncTracks[serverIndex]);
TrackData_linkTrack(serverIndex, trackName, &s_editorData.trackData);
s_editorData.trackData.tracks[serverIndex].active = true;

View File

@ -27,6 +27,8 @@
#include "rlog.h"
#include <stdio.h>
#include <assert.h>
#ifndef INVALID_SOCKET
#define INVALID_SOCKET -1
#endif
@ -35,6 +37,69 @@
#define SOCKET_ERROR -1
#endif
/* configure socket-stack */
#ifdef _WIN32
#define WIN32_LEAN_AND_MEAN
#define USE_GETADDRINFO
#ifndef NOMINMAX
#define NOMINMAX
#endif
#include <winsock2.h>
#include <ws2tcpip.h>
#include <windows.h>
#include <limits.h>
#elif defined(USE_AMITCP)
#include <sys/socket.h>
#include <proto/exec.h>
#include <proto/socket.h>
#include <netdb.h>
#define SOCKET int
#define INVALID_SOCKET -1
#define select(n,r,w,e,t) WaitSelect(n,r,w,e,t,0)
#define closesocket(x) CloseSocket(x)
#else
#include <sys/socket.h>
#include <sys/time.h>
#include <netinet/in.h>
#include <netdb.h>
#include <unistd.h>
#define SOCKET int
#define INVALID_SOCKET -1
#define closesocket(x) close(x)
#endif
#define CLIENT_GREET "hello, synctracker!"
#define SERVER_GREET "hello, demo!"
enum {
SET_KEY = 0,
DELETE_KEY = 1,
GET_TRACK = 2,
SET_ROW = 3,
PAUSE = 4,
SAVE_TRACKS = 5
};
static inline int socket_poll(SOCKET socket)
{
struct timeval to = { 0, 0 };
fd_set fds;
FD_ZERO(&fds);
#ifdef _MSC_VER
#pragma warning(push)
#pragma warning(disable: 4127)
#endif
FD_SET(socket, &fds);
#ifdef _MSC_VER
#pragma warning(pop)
#endif
return select((int)socket + 1, &fds, NULL, NULL, &to) > 0;
}
static int s_clientIndex;
int s_socket = INVALID_SOCKET;
int s_serverSocket = INVALID_SOCKET;

View File

@ -2,22 +2,54 @@
#include "Commands.h"
#include "rlog.h"
#include <stdio.h>
#include <assert.h>
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int sync_find_track(struct sync_track **tracks, size_t num_tracks, const char *name)
{
int i;
for (i = 0; i < (int)num_tracks; ++i)
if (!strcmp(name, tracks[i]->name))
return i;
return -1; /* not found */
}
int sync_create_track(struct sync_track ***tracksPtr, size_t *num_tracksPtr, const char *name)
{
struct sync_track *t;
struct sync_track **tracks = *tracksPtr;
size_t num_tracks = *num_tracksPtr;
assert(sync_find_track(tracks, num_tracks, name) < 0);
t = malloc(sizeof(*t));
t->name = strdup(name);
t->keys = NULL;
t->num_keys = 0;
tracks = realloc(tracks, sizeof(tracks[0]) * (num_tracks+1));
tracks[num_tracks] = t;
*num_tracksPtr = num_tracks+1;
*tracksPtr = tracks;
return (int)num_tracks;
}
int TrackData_createGetTrack(TrackData* trackData, const char* name)
{
int index = sync_find_track(&trackData->syncData, name);
int index = sync_find_track(trackData->syncTracks, trackData->num_syncTracks, name);
if (index < 0)
{
index = sync_create_track(&trackData->syncData, name);
index = sync_create_track(&trackData->syncTracks, &trackData->num_syncTracks, name);
memset(&trackData->tracks[index], 0, sizeof(Track));
trackData->tracks[index].index = index;
trackData->tracks[index].color = TrackData_getNextColor(trackData);
}
if (trackData->syncData.tracks)
Commands_init(trackData->syncData.tracks, trackData);
if (trackData->syncTracks)
Commands_init(trackData->syncTracks, trackData);
return index;
}
@ -151,10 +183,9 @@ void TrackData_linkTrack(int index, const char* name, TrackData* trackData)
void TrackData_linkGroups(TrackData* trackData)
{
int i, track_count;
struct sync_data* sync = &trackData->syncData;
for (i = 0, track_count = sync->num_tracks; i < track_count; ++i)
TrackData_linkTrack(i, sync->tracks[i]->name, trackData);
for (i = 0, track_count = trackData->num_syncTracks; i < track_count; ++i)
TrackData_linkTrack(i, trackData->syncTracks[i]->name, trackData);
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

View File

@ -64,7 +64,8 @@ typedef struct Group
typedef struct TrackData
{
struct sync_data syncData;
struct sync_track **syncTracks;
size_t num_syncTracks;
Track tracks[EDITOR_MAX_TRACKS];
Group groups[EDITOR_MAX_TRACKS];
int* loopmarks;

View File

@ -396,8 +396,8 @@ static int renderChannel(struct TrackInfo* info, int startX, Track* trackData, b
folded = trackData->folded;
if (info->trackData->syncData.tracks)
track = info->trackData->syncData.tracks[trackData->index];
if (info->trackData->syncTracks)
track = info->trackData->syncTracks[trackData->index];
size = renderName(trackData->displayName, startX, info->startY - (font_size * 2), min_track_size, folded, trackData->active);

View File

@ -6,6 +6,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <emgui/Types.h>
#include <assert.h>
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@ -100,7 +101,7 @@ static void parseXml(mxml_node_t* rootNode, TrackData* trackData)
track_index = TrackData_createGetTrack(trackData, track_name);
t = &trackData->tracks[track_index];
track = trackData->syncData.tracks[track_index];
track = trackData->syncTracks[track_index];
if (!color_text && t->color == 0)
{
@ -161,7 +162,7 @@ static void parseXml(mxml_node_t* rootNode, TrackData* trackData)
}
else if (!strcmp("key", element_name))
{
struct sync_track* track = trackData->syncData.tracks[track_index];
struct sync_track* track = trackData->syncTracks[track_index];
Track* t = &trackData->tracks[track_index];
const char* row = mxmlElementGetAttr(node, "row");
@ -353,7 +354,6 @@ int LoadSave_saveRocketXML(const text_t* path, TrackData* trackData)
FILE* fp;
size_t p;
struct sync_data* sync_data = &trackData->syncData;
int* bookmarks = trackData->bookmarks;
int* loopmarks = trackData->loopmarks;
@ -409,9 +409,9 @@ int LoadSave_saveRocketXML(const text_t* path, TrackData* trackData)
setElementInt(tracks, "endRow", "%d", trackData->endRow);
setElementInt(tracks, "highlightRowStep", "%d", trackData->highlightRowStep);
for (p = 0; p < sync_data->num_tracks; ++p)
for (p = 0; p < trackData->num_syncTracks; ++p)
{
const struct sync_track* t = sync_data->tracks[p];
const struct sync_track* t = trackData->syncTracks[p];
mxml_node_t* track = mxmlNewElement(tracks, "track");
bool isMuted = trackData->tracks[p].muteBackup ? true : false;