{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":4061330,"defaultBranch":"master","name":"rocket","ownerLogin":"emoon","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2012-04-18T07:47:04.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/350822?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1618430541.393934","currentOid":""},"activityList":{"items":[{"before":"6aa0f6fc95221be1e510bcdc2bd082974290bd44","after":"1e4178fd30aef64193e8d199e75ab0d66ce87160","ref":"refs/heads/master","pushedAt":"2024-02-25T12:29:43.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"emoon","name":"Daniel Collin","path":"/emoon","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/350822?s=80&v=4"},"commit":{"message":"macOS: opt out of HiDPI OpenGL surface (#170)","shortMessageHtmlLink":"macOS: opt out of HiDPI OpenGL surface (#170)"}},{"before":"8c4e97adb562451a8e31b3cc6b92c1cbdc4a48e8","after":"6aa0f6fc95221be1e510bcdc2bd082974290bd44","ref":"refs/heads/master","pushedAt":"2023-08-17T07:41:04.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"emoon","name":"Daniel Collin","path":"/emoon","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/350822?s=80&v=4"},"commit":{"message":"Implement support for multiple Rocket clients (#165)\n\n* RemoteConnection: static-ify sockets\r\n\r\nThese aren't accessed externally, make explicit.\r\n\r\n* RemoteConnect: s/s_clientIndex/s_trackMapIndex/\r\n\r\nMechanical rename to reduce ambiguity in a future having multiple\r\nclients. This doesn't index clients, it indexes the track\r\nmapping for the demo client...\r\n\r\n* Implement support for multiple Rocket clients\r\n\r\nThis adds the ability for RocketEditor to accept multiple\r\nsimultaneous Rocket connections.\r\n\r\nThe connection which performs GET_TRACK is assumed to be the\r\nDemo, which is a privileged client owning the map of track\r\nnames<->IDs. If another client attempts to GET_TRACK or SET_KEY\r\nthan the current Demo client, that client is diconnected and an\r\nerror logged. This single-demo limitation greatly simplifies\r\nsupporting multiple clients, as it skirts trying to turn the\r\ntrack-ID mapping into more of a distributed mapping within the\r\nexisting Rocket protocol.\r\n\r\nAll clients however are permitted to send SET_ROW and PAUSE, with\r\nthese commands also being broadcast (with filtering) to all\r\nclients for keeping them synchronized.\r\n\r\nThere's some ickiness to handling SET_ROW during playback, since\r\nit's unlikely the clients are all *perfectly* aligned on their\r\ncurrent row.\r\n\r\nWhen unpaused, incoming SET_ROW values are filtered to always\r\nmake forward progress. This prevents the editor from jittering\r\nbackwards during playback due to minor discrepancies in the\r\nclients current row. The exception to this is when the delta is\r\nat least a second worth of rows, which is seen as a deliberate\r\njump, regardless of direction. The filtered SET_ROW values are\r\nalso prevented from propagating to other clients.\r\n\r\nWhen paused however, any incoming SET_ROW is simply broadcast,\r\neven the slightest difference. As these are assumed to be\r\nexplicit precise movements during the creative track editing\r\nprocess. When broadcasting a SET_ROW, the originating client is\r\nfiltered from the recipients. So clients don't need to do\r\nanything WRT handling an echo.\r\n\r\nThe impetus for adding this feature is supporting use cases like\r\na tracker that has been modified to send PAUSE, and SET_ROW for\r\nthe pattern editor's cursor row up to RocketEditor. This is\r\nuseful in coordinating visuals with music during the creative\r\nprocess, with or without the demo showing visuals simultaneously\r\nconnected via Rocket.\r\n\r\nI have an experimental branch where SchismTracker already does\r\nthis, so this has actually been somewhat successfully tested, on\r\nLinux at least.\r\n\r\nNote I've also added the TCP_NODELAY socket flag, which is a\r\nchange I've already had merged at the core Rocket project as\r\nwell. When TCP_NODELAY is set everywhere in these multiclient\r\nscenarios, it significantly helps keeping the jitter down.\r\n\r\nThe TCP_NODELAY addition may need some testing/changes for\r\nhandling non-Linux platforms, since that's all I've tested.\r\n\r\n* README: add mention of multiple client support\r\n\r\nIncludes link to my SchismTracker draft PR adding rudimentary\r\nRocket support, since it's unclear when if ever that will get\r\nmerged upstream.","shortMessageHtmlLink":"Implement support for multiple Rocket clients (#165)"}},{"before":"3fa36313b176b793854be339cc79506d3d9a5c05","after":"8c4e97adb562451a8e31b3cc6b92c1cbdc4a48e8","ref":"refs/heads/master","pushedAt":"2023-07-21T15:51:25.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"emoon","name":"Daniel Collin","path":"/emoon","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/350822?s=80&v=4"},"commit":{"message":"Switch to ubuntu-latest for Linux CI","shortMessageHtmlLink":"Switch to ubuntu-latest for Linux CI"}},{"before":"59041124f7731bde911b51c02498af172de1134c","after":"3fa36313b176b793854be339cc79506d3d9a5c05","ref":"refs/heads/master","pushedAt":"2023-07-21T05:27:44.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"emoon","name":"Daniel Collin","path":"/emoon","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/350822?s=80&v=4"},"commit":{"message":"Bump LinearAllocator size and fixed Dialog path size param\n\n* Bump Emgui LinearAllocator up to 10MiB\r\n\r\nFixes https://github.com/emoon/rocket/issues/167\r\n\r\n* Make Dialog_open() uniformly accept size paramater\r\n\r\nWhile here always zero out the destination buffers w/memset\r\n\r\nThe platform-specific Dialog_open() implementations should still\r\nsee some love to actually make use of the size parameter, instead\r\nof all the hard-coded sizes and sloppy strcpy() usage etc.\r\n\r\nFixes https://github.com/emoon/rocket/issues/168","shortMessageHtmlLink":"Bump LinearAllocator size and fixed Dialog path size param"}}],"hasNextPage":false,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEBIQ5SAA","startCursor":null,"endCursor":null}},"title":"Activity ยท emoon/rocket"}