mirror of
				https://github.com/AlexandreRouma/SDRPlusPlus.git
				synced 2025-10-31 00:48:11 +01:00 
			
		
		
		
	Bugfix
This commit is contained in:
		
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -11,3 +11,4 @@ build/ | ||||
| root_dev/ | ||||
| Folder.DotSettings.user | ||||
| CMakeSettings.json | ||||
| poggers_decoder | ||||
| @@ -32,9 +32,16 @@ void ConfigManager::load(json def, bool lock) { | ||||
|         return; | ||||
|     } | ||||
|      | ||||
|     std::ifstream file(path.c_str()); | ||||
|     file >> conf; | ||||
|     file.close(); | ||||
|     try { | ||||
|         std::ifstream file(path.c_str()); | ||||
|         file >> conf; | ||||
|         file.close(); | ||||
|     } | ||||
|     catch (std::exception e) { | ||||
|         spdlog::error("Config file '{0}' is corrupted, resetting it", path); | ||||
|         conf = def; | ||||
|         save(false); | ||||
|     } | ||||
|     if (lock) { mtx.unlock(); } | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -53,7 +53,7 @@ namespace dsp { | ||||
|             } | ||||
|              | ||||
|             _in->flush(); | ||||
|             if (!out.swap(outCount)) { return -1; } | ||||
|             if (outCount > 0 && !out.swap(outCount)) { return -1; } | ||||
|             return count; | ||||
|         } | ||||
|  | ||||
| @@ -217,7 +217,7 @@ namespace dsp { | ||||
|             memcpy(delay, &_in->readBuf[count - 7], 7 * sizeof(T)); | ||||
|              | ||||
|             _in->flush(); | ||||
|             if (!out.swap(outCount)) { return -1; } | ||||
|             if (outCount > 0 && !out.swap(outCount)) { return -1; } | ||||
|             return count; | ||||
|         } | ||||
|  | ||||
|   | ||||
| @@ -64,7 +64,7 @@ namespace dsp { | ||||
|                     if (bitsRead >= _frameLen) { | ||||
|                         if (!out.swap((bitsRead / 8) + ((bitsRead % 8) > 0))) { return -1; } | ||||
|                         bitsRead = -1; | ||||
|                         nextBitIsStartOfFrame = true; | ||||
|                         if (allowSequential) { nextBitIsStartOfFrame = true; } | ||||
|                     } | ||||
|  | ||||
|                     continue; | ||||
| @@ -100,12 +100,14 @@ namespace dsp { | ||||
|             memcpy(buffer, &_in->readBuf[count - _syncLen], _syncLen); | ||||
|              | ||||
|             //printf("Block processed\n"); | ||||
|             callcount++; | ||||
|             callcount++;    | ||||
|  | ||||
|             _in->flush(); | ||||
|             return count; | ||||
|         } | ||||
|  | ||||
|         bool allowSequential = true; | ||||
|  | ||||
|         stream<uint8_t> out; | ||||
|  | ||||
|     private: | ||||
|   | ||||
| @@ -396,6 +396,11 @@ namespace dsp { | ||||
|             generic_hier_block<MSKDemod>::_block_init = true; | ||||
|         } | ||||
|  | ||||
|         void setInput(stream<complex_t>* input) { | ||||
|             assert((generic_hier_block<MSKDemod>::_block_init)); | ||||
|             demod.setInput(input); | ||||
|         } | ||||
|  | ||||
|         void setSampleRate(float sampleRate) { | ||||
|             assert(generic_hier_block<MSKDemod>::_block_init); | ||||
|             generic_hier_block<MSKDemod>::tempStop(); | ||||
|   | ||||
| @@ -1,9 +1,17 @@ | ||||
| #include <gui/widgets/symbol_diagram.h> | ||||
|  | ||||
| namespace ImGui { | ||||
|     SymbolDiagram::SymbolDiagram(float scale) { | ||||
|     SymbolDiagram::SymbolDiagram(float scale, int count) { | ||||
|         _scale = scale; | ||||
|         memset(buffer, 0, 1024 * sizeof(float)); | ||||
|         sampleCount = count; | ||||
|  | ||||
|         buffer = new float[count]; | ||||
|  | ||||
|         memset(buffer, 0, sampleCount * sizeof(float)); | ||||
|     } | ||||
|  | ||||
|     SymbolDiagram::~SymbolDiagram() { | ||||
|         delete[] buffer; | ||||
|     } | ||||
|  | ||||
|     void SymbolDiagram::draw(const ImVec2& size_arg) { | ||||
| @@ -23,9 +31,9 @@ namespace ImGui { | ||||
|  | ||||
|         window->DrawList->AddRectFilled(min, ImVec2(min.x+size.x, min.y+size.y), IM_COL32(0,0,0,255)); | ||||
|         ImU32 col = ImGui::GetColorU32(ImGuiCol_CheckMark, 0.7f); | ||||
|         float increment = size.x / 1024.0f; | ||||
|         float increment = size.x / (float)sampleCount; | ||||
|         float val; | ||||
|         for (int i = 0; i < 1024; i++) { | ||||
|         for (int i = 0; i < sampleCount; i++) { | ||||
|             val = buffer[i] * _scale; | ||||
|             if (val > 1.0f || val < -1.0f) { continue; } | ||||
|             window->DrawList->AddCircleFilled(ImVec2(((float)i * increment) + min.x, ((val + 1) * (size.y*0.5f)) + min.y), 2, col); | ||||
|   | ||||
| @@ -8,7 +8,8 @@ | ||||
| namespace ImGui { | ||||
|     class SymbolDiagram { | ||||
|     public: | ||||
|         SymbolDiagram(float _scale = 1.0f); | ||||
|         SymbolDiagram(float _scale = 1.0f, int count = 1024); | ||||
|         ~SymbolDiagram(); | ||||
|  | ||||
|         void draw(const ImVec2& size_arg = ImVec2(0, 0)); | ||||
|  | ||||
| @@ -18,8 +19,9 @@ namespace ImGui { | ||||
|  | ||||
|     private: | ||||
|         std::mutex bufferMtx; | ||||
|         float buffer[1024]; | ||||
|         float* buffer; | ||||
|         float _scale; | ||||
|         int sampleCount = 0; | ||||
|  | ||||
|     }; | ||||
| } | ||||
| @@ -682,6 +682,7 @@ namespace ImGui { | ||||
|  | ||||
|         if (waterfallVisible) { | ||||
|             FFTAreaHeight = std::min<int>(FFTAreaHeight, widgetSize.y - 50); | ||||
|             newFFTAreaHeight = FFTAreaHeight; | ||||
|             fftHeight = FFTAreaHeight - 50; | ||||
|             waterfallHeight = widgetSize.y - fftHeight - 52; | ||||
|         } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user