Cruisers Forum
 


Reply
  This discussion is proudly sponsored by:
Please support our sponsors and let them know you heard about their products on Cruisers Forums. Advertise Here
 
Thread Tools Search this Thread Rate Thread Display Modes
Old 09-04-2014, 12:24   #196
Registered User
 
rgleason's Avatar

Join Date: Mar 2012
Location: Boston, MA
Boat: 1981 Bristol 32 Sloop
Posts: 17,633
Images: 2
Re: Optimized Opencpn: Testers Needed

I guess this similar to display list which was a way of speeding up CAD which bogged down on big files in the early days. Good idea!

Sent from my SCH-I545 using Cruisers Sailing Forum mobile app
rgleason is offline   Reply With Quote
Old 09-04-2014, 17:51   #197
Registered User

Join Date: Aug 2009
Location: oriental
Boat: crowther trimaran 33
Posts: 4,417
Re: Optimized Opencpn: Testers Needed

As always, thank you for the catches and quick reply. Since sqrt is a fast function compared to pow, I was replacing it, but I made a mistake translating. Except there is one I don't understand why it is a warning:

Quote:
Originally Posted by ChuckSK View Post
Hi Sean

Code:
diff --git a/src/glChartCanvas.cpp b/src/glChartCanvas.cpp
index 67ad93e..8e590db 100644
--- a/src/glChartCanvas.cpp
+++ b/src/glChartCanvas.cpp
@@ -147,7 +147,7 @@ GLuint g_raster_format = GL_RGB;
 static       long g_tex_mem_used;
 
 static int g_tile_size;
-int g_mipmap_max_level = 4;
+const int g_mipmap_max_level = 4;
 
 bool glChartCanvas::s_b_useStencil;
 //static int s_nquickbind;
It is needed to not be const for GLES.

The rest as well as the macosx problem should all be fixed now in git.
seandepagnier is offline   Reply With Quote
Old 09-04-2014, 20:19   #198
Registered User

Join Date: Jun 2011
Location: 27south
Boat: Easton 47
Posts: 65
Re: Optimized Opencpn: Testers Needed

Hi Sean,
pulled that an compiled...that took us to 62% errors as follows...

code:

[ 62%] Building CXX object CMakeFiles/OpenCPN.dir/src/OCPNRegion.cpp.o
/Users/mo/seandepagnier/OpenCPN/src/OCPNRegion.cpp:507:26: error: expected ')'
Union(i.GetRect();
^
/Users/mo/seandepagnier/OpenCPN/src/OCPNRegion.cpp:507:14: note: to match this '('
Union(i.GetRect();
^
/Users/mo/seandepagnier/OpenCPN/src/OCPNRegion.cpp:615:9: error: use of undeclared identifier
'gdk_region_union_with_rect'
gdk_region_union_with_rect( M_REGIONDATA->m_region, &rect );
^
2 errors generated.
make[2]: *** [CMakeFiles/OpenCPN.dir/src/OCPNRegion.cpp.o] Error 1
make[1]: *** [CMakeFiles/OpenCPN.dir/all] Error 2
make: *** [all] Error 2
x:build mo$

Mo
Icnoships is offline   Reply With Quote
Old 10-04-2014, 04:28   #199
Registered User

Join Date: Aug 2009
Location: oriental
Boat: crowther trimaran 33
Posts: 4,417
Re: Optimized Opencpn: Testers Needed

Mo,

Ok, try again now.


I fixed a bunch of bugs today.. hopefully there aren't too many more left.
seandepagnier is offline   Reply With Quote
Old 10-04-2014, 05:17   #200
Registered User

Join Date: Dec 2005
Location: Helsingborg
Boat: Dufour 35
Posts: 3,891
Re: Optimized Opencpn: Testers Needed

Pulled and compiled Git 1/2 hour ago.


Looking at my previous list:
*No AIS Rollover -Fixed
*No AIS Target query dialog -Fixed
*The scale limit for showing AIS target names is not honored. It's on all the time. -Fixed
*Same thing for current number display. -Fixed
* The Gps status /North indicator dialog defaults to the lower right corner, hidden behind the chart and status bar. The normal position is top right. -No Change
*Dragging the toolbar, for example, leaves gray areas, noticeable for a short moment, before a screen-update kicks in. -No Change

A few more things:
* Deleting a route does not disappear from the screen....it stays on until zooming in/out.
* Using the "measure" tool works similar. The measured distances stays on screen even after "Measure off" is pressed, until zooming in/out.
* Wpts behave similar. When created trough right click menu or Ctrl + M it only appears on screen after zooming. Deleting a wpt, same thing as with route & measure.


Thomas
cagney is offline   Reply With Quote
Old 10-04-2014, 05:30   #201
bcn
Registered User

Join Date: May 2011
Location: underway whenever possible
Boat: Rangeboat 39
Posts: 4,740
Re: Optimized Opencpn: Testers Needed

Quote:
Originally Posted by cagney View Post
*Dragging the toolbar, for example, leaves gray areas, noticeable for a short moment, before a screen-update kicks in. -No Change


Thomas
Thomas, that's a much better description of what I noticed already with the 3.3.13034 built for the ARM. "breaking the canvas" I called it..

Hubert
bcn is offline   Reply With Quote
Old 10-04-2014, 12:05   #202
Registered User

Join Date: Jun 2011
Location: 27south
Boat: Easton 47
Posts: 65
Re: Optimized Opencpn: Testers Needed

sean,
got to 63% results as follows ...

code:


[ 63%] Building CXX object CMakeFiles/OpenCPN.dir/src/glChartCanvas.cpp.o
/Users/mo/seandepagnier/OpenCPN/src/glChartCanvas.cpp:205:17: warning: add explicit braces to avoid dangling
else [-Wdangling-else]
wxLogMessage(wxString::Format(_T("glDeleteTextures entire tile %d"), ptd->tex_name ));
^
/opt/local/include/wx-2.9/wx/log.h:1366:22: note: expanded from macro 'wxLogMessage'
#define wxLogMessage wxDO_LOG_IF_ENABLED(Message)
^
/opt/local/include/wx-2.9/wx/log.h:1353:5: note: expanded from macro 'wxDO_LOG_IF_ENABLED'
else \
^
/Users/mo/seandepagnier/OpenCPN/src/glChartCanvas.cpp:209:31: warning: add explicit braces to avoid dangling
else [-Wdangling-else]
if( g_bDebugOGL ) wxLogMessage(wxString::Format(_T("glDeleteTextures up to %d level" ),...
^
/opt/local/include/wx-2.9/wx/log.h:1366:22: note: expanded from macro 'wxLogMessage'
#define wxLogMessage wxDO_LOG_IF_ENABLED(Message)
^
/opt/local/include/wx-2.9/wx/log.h:1353:5: note: expanded from macro 'wxDO_LOG_IF_ENABLED'
else \
^
/Users/mo/seandepagnier/OpenCPN/src/glChartCanvas.cpp:257:14: error: call to member function 'replace' is
ambiguous
path.replace(pos, 1, 1, '!');
~~~~~^~~~~~~
/opt/local/include/wx-2.9/wx/string.h:2961:13: note: candidate function
wxString& replace(size_t nStart, size_t nLen, size_t nCount, wxUniChar ch)
^
/opt/local/include/wx-2.9/wx/string.h:3025:13: note: candidate function
wxString& replace(size_t nStart, size_t nLen,
^
/opt/local/include/wx-2.9/wx/string.h:2995:13: note: candidate function not viable: no known conversion from
'int' to 'const char *' for 3rd argument
wxString& replace(size_t nStart, size_t nLen,
^
/opt/local/include/wx-2.9/wx/string.h:3010:13: note: candidate function not viable: no known conversion from
'int' to 'const wchar_t *' for 3rd argument
wxString& replace(size_t nStart, size_t nLen,
^
/opt/local/include/wx-2.9/wx/string.h:3055:13: note: candidate function not viable: no known conversion from
'unsigned int' to 'wxString::iterator' for 1st argument
wxString& replace(iterator first, iterator last, const char* s, size_type n)
^
/opt/local/include/wx-2.9/wx/string.h:3065:13: note: candidate function not viable: no known conversion from
'unsigned int' to 'wxString::iterator' for 1st argument
wxString& replace(iterator first, iterator last, const wchar_t* s, size_type n)
^
/opt/local/include/wx-2.9/wx/string.h:3084:13: note: candidate function not viable: no known conversion from
'unsigned int' to 'wxString::iterator' for 1st argument
wxString& replace(iterator first, iterator last, size_type n, wxUniChar ch)
^
/opt/local/include/wx-2.9/wx/string.h:3099:13: note: candidate function not viable: no known conversion from
'unsigned int' to 'wxString::iterator' for 1st argument
wxString& replace(iterator first, iterator last,
^
/opt/local/include/wx-2.9/wx/string.h:3109:13: note: candidate function not viable: no known conversion from
'unsigned int' to 'wxString::iterator' for 1st argument
wxString& replace(iterator first, iterator last,
^
/opt/local/include/wx-2.9/wx/string.h:3112:13: note: candidate function not viable: no known conversion from
'unsigned int' to 'wxString::iterator' for 1st argument
wxString& replace(iterator first, iterator last,
^
/opt/local/include/wx-2.9/wx/string.h:2926:13: note: candidate function not viable: requires 3 arguments, but 4
were provided
wxString& replace(size_t nStart, size_t nLen, const char* sz)
^
/opt/local/include/wx-2.9/wx/string.h:2937:13: note: candidate function not viable: requires 3 arguments, but 4
were provided
wxString& replace(size_t nStart, size_t nLen, const wchar_t* sz)
^
/opt/local/include/wx-2.9/wx/string.h:2949:13: note: candidate function not viable: requires 3 arguments, but 4
were provided
wxString& replace(size_t nStart, size_t nLen, const wxString& str)
^
/opt/local/include/wx-2.9/wx/string.h:2978:13: note: candidate function not viable: requires 5 arguments, but 4
were provided
wxString& replace(size_t nStart, size_t nLen,
^
/opt/local/include/wx-2.9/wx/string.h:3037:13: note: candidate function not viable: requires 3 arguments, but 4
were provided
wxString& replace(iterator first, iterator last, const char* s)
^
/opt/local/include/wx-2.9/wx/string.h:3046:13: note: candidate function not viable: requires 3 arguments, but 4
were provided
wxString& replace(iterator first, iterator last, const wchar_t* s)
^
/opt/local/include/wx-2.9/wx/string.h:3075:13: note: candidate function not viable: requires 3 arguments, but 4
were provided
wxString& replace(iterator first, iterator last, const wxString& s)
^
/Users/mo/seandepagnier/OpenCPN/src/glChartCanvas.cpp:283:17: warning: add explicit braces to avoid dangling
else [-Wdangling-else]
wxLogMessage(wxString::Format( _T(" -->UploadTexture %d base_level %d"), ptd->tex_name,...
^
/opt/local/include/wx-2.9/wx/log.h:1366:22: note: expanded from macro 'wxLogMessage'
#define wxLogMessage wxDO_LOG_IF_ENABLED(Message)
^
/opt/local/include/wx-2.9/wx/log.h:1353:5: note: expanded from macro 'wxDO_LOG_IF_ENABLED'
else \
^
/Users/mo/seandepagnier/OpenCPN/src/glChartCanvas.cpp:329:13: warning: add explicit braces to avoid dangling
else [-Wdangling-else]
wxLogMessage( wxString::Format(_T(" -->UploadTexture, compressedcachedpath: ")
^
/opt/local/include/wx-2.9/wx/log.h:1366:22: note: expanded from macro 'wxLogMessage'
#define wxLogMessage wxDO_LOG_IF_ENABLED(Message)
^
/opt/local/include/wx-2.9/wx/log.h:1353:5: note: expanded from macro 'wxDO_LOG_IF_ENABLED'
else \
^
/Users/mo/seandepagnier/OpenCPN/src/glChartCanvas.cpp:434:13: warning: add explicit braces to avoid dangling
else [-Wdangling-else]
wxLogMessage( wxString::Format(_T(" -->UploadTexture loading uncompressed base level")));
^
/opt/local/include/wx-2.9/wx/log.h:1366:22: note: expanded from macro 'wxLogMessage'
#define wxLogMessage wxDO_LOG_IF_ENABLED(Message)
^
/opt/local/include/wx-2.9/wx/log.h:1353:5: note: expanded from macro 'wxDO_LOG_IF_ENABLED'
else \
^
/Users/mo/seandepagnier/OpenCPN/src/glChartCanvas.cpp:465:13: warning: add explicit braces to avoid dangling
else [-Wdangling-else]
wxLogMessage( wxString::Format(_T(" -->UploadTexture Using hardware mipmaps")));
^
/opt/local/include/wx-2.9/wx/log.h:1366:22: note: expanded from macro 'wxLogMessage'
#define wxLogMessage wxDO_LOG_IF_ENABLED(Message)
^
/opt/local/include/wx-2.9/wx/log.h:1353:5: note: expanded from macro 'wxDO_LOG_IF_ENABLED'
else \
^
/Users/mo/seandepagnier/OpenCPN/src/glChartCanvas.cpp:539:25: warning: add explicit braces to avoid dangling
else [-Wdangling-else]
wxLogMessage( wxString::Format(_T(" -->UploadTexture Generate hw mipmaps")));
^
/opt/local/include/wx-2.9/wx/log.h:1366:22: note: expanded from macro 'wxLogMessage'
#define wxLogMessage wxDO_LOG_IF_ENABLED(Message)
^
/opt/local/include/wx-2.9/wx/log.h:1353:5: note: expanded from macro 'wxDO_LOG_IF_ENABLED'
else \
^
/Users/mo/seandepagnier/OpenCPN/src/glChartCanvas.cpp:562:9: warning: add explicit braces to avoid dangling else
[-Wdangling-else]
wxLogMessage( wxString::Format(_T(" -->UploadTexture Setting texture parameters...")));
^
/opt/local/include/wx-2.9/wx/log.h:1366:22: note: expanded from macro 'wxLogMessage'
#define wxLogMessage wxDO_LOG_IF_ENABLED(Message)
^
/opt/local/include/wx-2.9/wx/log.h:1353:5: note: expanded from macro 'wxDO_LOG_IF_ENABLED'
else \
^
/Users/mo/seandepagnier/OpenCPN/src/glChartCanvas.cpp:595:23: warning: add explicit braces to avoid dangling
else [-Wdangling-else]
if( g_bDebugOGL ) wxLogMessage(wxString::Format(_T("BuildCompressedC ache() count = %d"), count ));
^
/opt/local/include/wx-2.9/wx/log.h:1366:22: note: expanded from macro 'wxLogMessage'
#define wxLogMessage wxDO_LOG_IF_ENABLED(Message)
^
/opt/local/include/wx-2.9/wx/log.h:1353:5: note: expanded from macro 'wxDO_LOG_IF_ENABLED'
else \
^
/Users/mo/seandepagnier/OpenCPN/src/glChartCanvas.cpp:639:27: warning: add explicit braces to avoid dangling
else [-Wdangling-else]
if( g_bDebugOGL ) wxLogMessage(wxString::Format(_T("BuildCompressedC ache() File:"
^
/opt/local/include/wx-2.9/wx/log.h:1366:22: note: expanded from macro 'wxLogMessage'
#define wxLogMessage wxDO_LOG_IF_ENABLED(Message)
^
/opt/local/include/wx-2.9/wx/log.h:1353:5: note: expanded from macro 'wxDO_LOG_IF_ENABLED'
else \
^
/Users/mo/seandepagnier/OpenCPN/src/glChartCanvas.cpp:2560:9: warning: add explicit braces to avoid dangling
else [-Wdangling-else]
wxLogMessage(msg);
^
/opt/local/include/wx-2.9/wx/log.h:1366:22: note: expanded from macro 'wxLogMessage'
#define wxLogMessage wxDO_LOG_IF_ENABLED(Message)
^
/opt/local/include/wx-2.9/wx/log.h:1353:5: note: expanded from macro 'wxDO_LOG_IF_ENABLED'
else \
^
11 warnings and 1 error generated.
make[2]: *** [CMakeFiles/OpenCPN.dir/src/glChartCanvas.cpp.o] Error 1
make[1]: *** [CMakeFiles/OpenCPN.dir/all] Error 2
make: *** [all] Error 2
x:build mo$

Mo
Icnoships is offline   Reply With Quote
Old 11-04-2014, 04:18   #203
Registered User
 
rooiedirk's Avatar

Join Date: Aug 2010
Location: Netherlands
Boat: Oneoff
Posts: 511
Re: Optimized Opencpn: Testers Needed

Fresh git update (11-4 10:40UTC)
compiles fine under gentoo with onlu one Warning.
Code:
[ 45%] Building C object CMakeFiles/S57ENC.dir/src/tri.c.o                                                                          
/home/dirk/development/Ocpn-Optimised2/OpenCPN/src/tri.c: In function ‘do_triangulate_polygon’:
/home/dirk/development/Ocpn-Optimised2/OpenCPN/src/tri.c:689:7: warning: this decimal constant is unsigned only in ISO C90 [enabled by default]
If I use texture compression the screen goes blank using raster charts. (see pictures)
After leaving O with texture compression on, t.c. is off again after restarting O.
part of config file
Code:
UseFBOPanning=1
GPUTextureCompression=1
GPUTextureDimension=512
GPUTextureMemSize=256
UseMagAPB=0
MobileTouch=0
GPUTextureCompressionCaching=1
CM93 is going smoothly.
Thanks for all the work
Dirk
Attached Thumbnails
Click image for larger version

Name:	raster Texture compression off.jpg
Views:	171
Size:	333.5 KB
ID:	79139   Click image for larger version

Name:	raster Texture compression on.png
Views:	128
Size:	63.2 KB
ID:	79140  

rooiedirk is offline   Reply With Quote
Old 11-04-2014, 05:29   #204
Registered User
 
rooiedirk's Avatar

Join Date: Aug 2010
Location: Netherlands
Boat: Oneoff
Posts: 511
Re: Optimized Opencpn: Testers Needed

Continued
in my logfile there are a lot of:
Code:
CEST: Timings: p:1591 m:0 hwm:213 u:276    uc:2 dc:0 dcc: 59 rc:3 wc:0   base:0
Problem found myself. there where multiple charts whith the same name in different folders.
raster now also OK
Dirk
rooiedirk is offline   Reply With Quote
Old 12-04-2014, 02:16   #205
Registered User

Join Date: Aug 2009
Location: oriental
Boat: crowther trimaran 33
Posts: 4,417
Re: Optimized Opencpn: Testers Needed

Quote:
Originally Posted by Icnoships View Post
sean,
got to 63% results as follows ...

code:
....

11 warnings and 1 error generated.
make[2]: *** [CMakeFiles/OpenCPN.dir/src/glChartCanvas.cpp.o] Error 1
make[1]: *** [CMakeFiles/OpenCPN.dir/all] Error 2
make: *** [all] Error 2
x:build mo$

Mo
Are you using clang? Really annoying compiler messages.. its a lot for only 1 error.

Anyway I think I have a fix.. so maybe try again.

Quote:
Originally Posted by rooiedirk View Post
Continued
in my logfile there are a lot of:
Code:
CEST: Timings: p:1591 m:0 hwm:213 u:276    uc:2 dc:0 dcc: 59 rc:3 wc:0   base:0
Problem found myself. there where multiple charts whith the same name in different folders.
raster now also OK
Dirk
Do you have this problem with the normal beta opencpn also? I don't think it should be an issue to have multiple charts with the same names in different folders, but it probably actually is. If so, it should at the very least give a warning to the user.

So.. you can see from the timings, without using the cache:
1591 milliseconds populating (reading the kap file) 213 milliseconds generating the mipmaps with hardware acceleration, 276 milliseconds uploading (and possibly compressing) the data to the gpu.

Operations using the cache:
2 milliseconds uploading compressed data to the gpu, 59 milliseconds decompressing compressed texture data from disk, 3 milliseconds reading compressed data from disk.
We could store the cache uncompressed and it would be even faster, but the disk space needed is quite large.



I have a small update today. It reduces the size of the cache on disk while greatly increasing the image quality. It also takes far less time to generate especially since it can use multiple cpu cores (I have dual core). It takes me just 2 hours to generate the cache for the BSB_ROOT (us charts) on my c720 chromebook.
seandepagnier is offline   Reply With Quote
Old 12-04-2014, 12:43   #206
Registered User

Join Date: Jun 2011
Location: 27south
Boat: Easton 47
Posts: 65
Re: Optimized Opencpn: Testers Needed

Sean, Success ! compiled with just a few warnings, thanks for the time/perseverance. Yes that was clang btw.
ok enabled compression ect. selected a small amount of chart files an built the cache.... all went well to that point then crash.... cpm log reports...

05:04:01 EST: Finished chart database Update
05:04:01 EST:
05:04:01 EST: BuildCompressedCache() count = 77
05:04:01 EST: BuildCompressedCache() File:/Users/mo/Library/Preferences/raster_texture_cache/!Users!mo!Desktop!O!opencpndata!charts!BSB_Austral ia_East_Coast!540_1.KAP.compressed_chart
05:04:01 EST: Initializing Chart /Users/mo/Desktop/O/opencpndata/charts/BSB_Australia_East_Coast/540_1.KAP
05:04:01 EST: BuildCompressedCache() File:/Users/mo/Library/Preferences/raster_texture_cache/!Users!mo!Desktop!O!opencpndata!charts!BSB_Austral ia_East_Coast!81004_1.KAP.compressed_chart
05:04:01 EST: Initializing Chart /Users/mo/Desktop/O/opencpndata/charts/BSB_Australia_East_Coast/81004_1.KAP
05:04:20 EST:

restarted - crash - log says...

05:04:23 EST: Initializing Chart /Users/mo/Desktop/O/opencpndata/charts/BSB_Australia_East_Coast/AUS4602.KAP
05:04:23 EST: -->UploadTexture 1 base_level 1
05:04:23 EST: -->UploadTexture, compressedcachedpath: /Users/mo/Library/Preferences/raster_texture_cache/!Users!mo!Desktop!O!opencpndata!charts!BSB_Austral ia_East_Coast!AUS4602.KAP.compressed_chart
05:04:23 EST: -->UploadTexture loading uncompressed base level
05:10:43 EST:

so is this now down to the "aglGetProcAddress" or ?

thanks Mo
Icnoships is offline   Reply With Quote
Old 12-04-2014, 12:54   #207
Registered User

Join Date: Jun 2011
Location: 27south
Boat: Easton 47
Posts: 65
Re: Optimized Opencpn: Testers Needed

sean, update.... yes opengl issue its rendering the charts with opengl disabled and from limited playing appears stable.
Mo
Icnoships is offline   Reply With Quote
Old 12-04-2014, 13:11   #208
Registered User

Join Date: Aug 2009
Location: oriental
Boat: crowther trimaran 33
Posts: 4,417
Re: Optimized Opencpn: Testers Needed

Quote:
Originally Posted by cagney View Post
Pulled and compiled Git 1/2 hour ago.
* The Gps status /North indicator dialog defaults to the lower right corner, hidden behind the chart and status bar. The normal position is top right. -No Change
fixed
Quote:
*Dragging the toolbar, for example, leaves gray areas, noticeable for a short moment, before a screen-update kicks in. -No Change
This does not occur for me. It is probably a result of less refresh as this reduces idle cpu which is important for using other programs, and for power consumption. Maybe we need to catch the move event for the toolbar and issue a frame refresh only on windows?
Quote:
A few more things:
* Deleting a route does not disappear from the screen....it stays on until zooming in/out.
* Using the "measure" tool works similar. The measured distances stays on screen even after "Measure off" is pressed, until zooming in/out.
* Wpts behave similar. When created trough right click menu or Ctrl + M it only appears on screen after zooming. Deleting a wpt, same thing as with route & measure.
I think all are fixed now


I fixed a lot more bugs (that existed all along) related to course up mode with skewed charts as well.
seandepagnier is offline   Reply With Quote
Old 12-04-2014, 14:24   #209
Registered User

Join Date: Apr 2009
Location: Marina Del Rey
Boat: Hylas 44
Posts: 387
Re: Optimized Opencpn: Testers Needed

Sean

The raster chart colors are now reversed from RGB to BGR.

Also glChartCanvas.cpp still generates a compile error if g_mipmap_max_level is not declared const. The size of offsets[] array must be known at compile time.

Chuck
ChuckSK is offline   Reply With Quote
Old 12-04-2014, 19:39   #210
Registered User

Join Date: Aug 2009
Location: oriental
Boat: crowther trimaran 33
Posts: 4,417
Re: Optimized Opencpn: Testers Needed

Quote:
Originally Posted by ChuckSK View Post
Sean

The raster chart colors are now reversed from RGB to BGR.

Also glChartCanvas.cpp still generates a compile error if g_mipmap_max_level is not declared const. The size of offsets[] array must be known at compile time.

Chuck
I have fixed these and more. Thanks for the feedback.
seandepagnier is offline   Reply With Quote
Reply

Tags
opencpn, enc


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are Off
Refbacks are Off


Advertise Here


All times are GMT -7. The time now is 15:06.


Google+
Powered by vBulletin® Version 3.8.8 Beta 1
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Social Knowledge Networks
Powered by vBulletin® Version 3.8.8 Beta 1
Copyright ©2000 - 2024, vBulletin Solutions, Inc.

ShowCase vBulletin Plugins by Drive Thru Online, Inc.