Skip to content

Commit bcabc4e

Browse files
committed
fixed some crashes
1 parent 218d2b9 commit bcabc4e

5 files changed

Lines changed: 54 additions & 20 deletions

File tree

source/3ds_discord.cpp

Lines changed: 32 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,32 +14,42 @@ void ThreeDSDiscordClient::addNewMessage(SleepyDiscord::Message message) {
1414
}
1515

1616
void ThreeDSDiscordClient::onMessage(SleepyDiscord::Message message) {
17+
if (servers.size() == 0 || isCurrentChannelHandleValid == false) return;
1718
if (message.channel_id == getCurrentChannel().id) {
1819
addNewMessage(message);
1920
}
2021
}
2122

2223
void ThreeDSDiscordClient::onServer(SleepyDiscord::Server server) {
23-
servers.push_back(server);
24-
printf("Added %s to the server list\n", server.name.c_str());
24+
addServer(server);
2525
}
2626

2727
void ThreeDSDiscordClient::switchServer() {
2828
if (servers.size() == 0) return;
29-
//change current server
30-
if (servers.size() <= ++currentServerHandle)
31-
currentServerHandle = 0;
32-
//change channel to first channel in that server
33-
for (currentChannelHandle = 0; currentChannelHandle < getCurrentServer().channels.size(); ++currentChannelHandle) {
34-
if (getCurrentChannel().position == 0) break;
35-
}
36-
printf("Switched channel to %s #%s\n", getCurrentServer().name.c_str(), getCurrentChannel().name.c_str());
29+
//change current server
30+
if (servers.size() <= ++currentServerHandle)
31+
currentServerHandle = 0;
32+
isCurrentChannelHandleValid = false;
33+
printf("Switched Server to %s.\n", getCurrentServer().name.c_str());
3734
}
3835

3936
void ThreeDSDiscordClient::switchChannel() {
4037
if (servers.size() == 0) return;
38+
unsigned int newChannelPosition;
39+
/*if the current channel handle is invalid
40+
then make it valid*/
41+
if (isCurrentChannelHandleValid == false) {
42+
if (getCurrentServer().channels.size() == 0)
43+
getCurrentServer().channels = GetServerChannels(getCurrentServer().id);
44+
//change channel to first channel in that server
45+
newChannelPosition = 0;
46+
isCurrentChannelHandleValid = true;
47+
} else {
48+
newChannelPosition = getCurrentChannel().position + 1;
49+
}
50+
4151
//get the position of the next channel
42-
unsigned int newChannelPosition = getCurrentChannel().position + 1;
52+
4353
const unsigned int channelCount = getCurrentServer().channels.size();
4454
if (channelCount <= newChannelPosition)
4555
newChannelPosition = 0;
@@ -100,4 +110,14 @@ void ThreeDSDiscordClient::launchKeyboardAndSentMessage() {
100110
}
101111
//send message
102112
sendMessage(getCurrentChannel().id, std::string(buffer.begin(), iteratorToZero));
103-
}
113+
}
114+
115+
void ThreeDSDiscordClient::onReady(std::string * jsonMessage) {
116+
printf("ready\n");
117+
if (!isBot()) {
118+
std::vector<SleepyDiscord::Server> servers = getServers();
119+
for (SleepyDiscord::Server server : servers) {
120+
addServer(server);
121+
}
122+
}
123+
}

source/3ds_discord.h

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,7 @@ class ThreeDSDiscordClient : public ThreeDSWebsocketClient {
1111
void launchKeyboardAndSentMessage();
1212
Renderer renderer;
1313
private:
14-
void onReady(std::string* jsonMessage) {
15-
printf("ready\n");
16-
}
14+
void onReady(std::string* jsonMessage);
1715
void onHeartbeat() {
1816
printf("heartbeat sent\n");
1917
}
@@ -23,6 +21,11 @@ class ThreeDSDiscordClient : public ThreeDSWebsocketClient {
2321
void onMessage(SleepyDiscord::Message message);
2422
void onServer(SleepyDiscord::Server server);
2523

24+
inline void addServer(SleepyDiscord::Server server) {
25+
servers.push_back(server);
26+
printf("Added %s to the server list\n", server.name.c_str());
27+
}
28+
2629
inline SleepyDiscord::Server& getCurrentServer() {
2730
return servers[currentServerHandle];
2831
}
@@ -36,6 +39,7 @@ class ThreeDSDiscordClient : public ThreeDSWebsocketClient {
3639
//SleepyDiscord::Channel currentChannel;
3740
unsigned int currentServerHandle;
3841
unsigned int currentChannelHandle;
42+
bool isCurrentChannelHandleValid = false;
3943

4044
void addNewMessage(SleepyDiscord::Message message);
4145
};

source/3ds_websocket.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ bool ThreeDSWebsocketClient::pollSocket(int events) {
9696
}
9797

9898
void ThreeDSWebsocketClient::tick() {
99-
heartbeat();
99+
resumeHeartbeatLoop();
100100
//when a heartbeat fails, eventContext will be null because we're disconnected
101101
if (isRunning == false)
102102
return;

test_3ds.sln

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,24 +9,34 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testgdb_3ds", "testgdb_3ds.
99
EndProject
1010
Global
1111
GlobalSection(SolutionConfigurationPlatforms) = preSolution
12+
Debug|3DS = Debug|3DS
1213
Debug|x64 = Debug|x64
1314
Debug|x86 = Debug|x86
15+
Release|3DS = Release|3DS
1416
Release|x64 = Release|x64
1517
Release|x86 = Release|x86
1618
EndGlobalSection
1719
GlobalSection(ProjectConfigurationPlatforms) = postSolution
20+
{53411D0D-61B8-4B7E-B20C-EC358A9D7141}.Debug|3DS.ActiveCfg = Debug|Win32
21+
{53411D0D-61B8-4B7E-B20C-EC358A9D7141}.Debug|3DS.Build.0 = Debug|Win32
1822
{53411D0D-61B8-4B7E-B20C-EC358A9D7141}.Debug|x64.ActiveCfg = Debug|x64
1923
{53411D0D-61B8-4B7E-B20C-EC358A9D7141}.Debug|x64.Build.0 = Debug|x64
2024
{53411D0D-61B8-4B7E-B20C-EC358A9D7141}.Debug|x86.ActiveCfg = Debug|Win32
2125
{53411D0D-61B8-4B7E-B20C-EC358A9D7141}.Debug|x86.Build.0 = Debug|Win32
26+
{53411D0D-61B8-4B7E-B20C-EC358A9D7141}.Release|3DS.ActiveCfg = Release|Win32
27+
{53411D0D-61B8-4B7E-B20C-EC358A9D7141}.Release|3DS.Build.0 = Release|Win32
2228
{53411D0D-61B8-4B7E-B20C-EC358A9D7141}.Release|x64.ActiveCfg = Release|x64
2329
{53411D0D-61B8-4B7E-B20C-EC358A9D7141}.Release|x64.Build.0 = Release|x64
2430
{53411D0D-61B8-4B7E-B20C-EC358A9D7141}.Release|x86.ActiveCfg = Release|Win32
2531
{53411D0D-61B8-4B7E-B20C-EC358A9D7141}.Release|x86.Build.0 = Release|Win32
32+
{E41BE699-3DEC-4E62-A94F-F7BE135C08CA}.Debug|3DS.ActiveCfg = Debug|Win32
33+
{E41BE699-3DEC-4E62-A94F-F7BE135C08CA}.Debug|3DS.Build.0 = Debug|Win32
2634
{E41BE699-3DEC-4E62-A94F-F7BE135C08CA}.Debug|x64.ActiveCfg = Debug|x64
2735
{E41BE699-3DEC-4E62-A94F-F7BE135C08CA}.Debug|x64.Build.0 = Debug|x64
2836
{E41BE699-3DEC-4E62-A94F-F7BE135C08CA}.Debug|x86.ActiveCfg = Debug|Win32
2937
{E41BE699-3DEC-4E62-A94F-F7BE135C08CA}.Debug|x86.Build.0 = Debug|Win32
38+
{E41BE699-3DEC-4E62-A94F-F7BE135C08CA}.Release|3DS.ActiveCfg = Release|Win32
39+
{E41BE699-3DEC-4E62-A94F-F7BE135C08CA}.Release|3DS.Build.0 = Release|Win32
3040
{E41BE699-3DEC-4E62-A94F-F7BE135C08CA}.Release|x64.ActiveCfg = Release|x64
3141
{E41BE699-3DEC-4E62-A94F-F7BE135C08CA}.Release|x64.Build.0 = Release|x64
3242
{E41BE699-3DEC-4E62-A94F-F7BE135C08CA}.Release|x86.ActiveCfg = Release|Win32

test_3ds.vcxproj

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -67,16 +67,16 @@
6767
<NMakeCleanCommandLine>make clean</NMakeCleanCommandLine>
6868
<NMakePreprocessorDefinitions>NDEBUG;SLEEPY_ONE_THREAD;SLEEPY_CUSTOM_SESSION;$(NMakePreprocessorDefinitions)</NMakePreprocessorDefinitions>
6969
<NMakeReBuildCommandLine>make clean all</NMakeReBuildCommandLine>
70-
<NMakeIncludeSearchPath>c:\devkitPro\libctru\include;c:\devkitPro\devkitARM\arm-none-eabi\include\;$(NMakeIncludeSearchPath)</NMakeIncludeSearchPath>
71-
<IncludePath>$(ProjectDir)source;$(ProjectDir)include;$(ProjectDir)..\..;$(ProjectDir)..\..\sleepy_discord\IncludeNonexistent;$(IncludePath)</IncludePath>
70+
<NMakeIncludeSearchPath>c:\devkitPro\libctru\include;c:\devkitPro\devkitARM\arm-none-eabi\include;$(NMakeIncludeSearchPath)</NMakeIncludeSearchPath>
71+
<IncludePath>$(ProjectDir)source;$(ProjectDir)include;C:\devkitPro\portlibs\3ds\include;C:\devkitPro\portlibs\3ds\include\sleepy_discord;C:\devkitPro\portlibs\3ds\include\sleepy_discord\IncludeNonexistent;$(IncludePath)</IncludePath>
7272
</PropertyGroup>
7373
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
7474
<NMakeBuildCommandLine>make</NMakeBuildCommandLine>
7575
<NMakeCleanCommandLine>make clean</NMakeCleanCommandLine>
7676
<NMakePreprocessorDefinitions>NDEBUG;SLEEPY_ONE_THREAD;SLEEPY_CUSTOM_SESSION;$(NMakePreprocessorDefinitions)</NMakePreprocessorDefinitions>
7777
<NMakeReBuildCommandLine>make clean all</NMakeReBuildCommandLine>
78-
<NMakeIncludeSearchPath>c:\devkitPro\libctru\include;c:\devkitPro\devkitARM\arm-none-eabi\include\;$(NMakeIncludeSearchPath)</NMakeIncludeSearchPath>
79-
<IncludePath>$(ProjectDir)source;$(ProjectDir)include;$(ProjectDir)..\..;$(ProjectDir)..\..\sleepy_discord\IncludeNonexistent;$(IncludePath)</IncludePath>
78+
<NMakeIncludeSearchPath>c:\devkitPro\libctru\include;c:\devkitPro\devkitARM\arm-none-eabi\include;$(NMakeIncludeSearchPath)</NMakeIncludeSearchPath>
79+
<IncludePath>$(ProjectDir)source;$(ProjectDir)include;C:\devkitPro\portlibs\3ds\include;C:\devkitPro\portlibs\3ds\include\sleepy_discord;C:\devkitPro\portlibs\3ds\include\sleepy_discord\IncludeNonexistent;$(IncludePath)</IncludePath>
8080
</PropertyGroup>
8181
<ItemDefinitionGroup>
8282
</ItemDefinitionGroup>

0 commit comments

Comments
 (0)